Educational Codeforces Round 163 (Rated for Div. 2) (A~C)

2024-03-16 19:52

本文主要是介绍Educational Codeforces Round 163 (Rated for Div. 2) (A~C),希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

Educational Codeforces Round 163 (Rated for Div. 2) (A~C)

目录:A B C

A题:Special Characters

标签: 暴力枚举(brute force)构造算法(constructive algorithms)

题目大意

  • 构造一个字符串含有n个特殊字符
  • 如果一个字符与其相邻的一个字符相等,我们就将其称为特殊字符。

思路

  • 特殊字符总是两个两个出现,例如 AAABBB 4个特殊字符
  • n(n>2)个连续的字符也只有两个特殊字符,构造AABBCCDDEE型字符串即可

AC代码

#include<bits/stdc++.h>
using namespace std;
void solve()
{int n; cin >> n;string s = "";if(n%2) cout << "NO\n";else{cout << "YES\n";for(int i = 0;i < n;i +=2){if(i%4)  cout << "AA";else  cout << "BB";}cout << endl;}
}
int main()
{int T; cin >> T;while(T--)solve();
}

B题:Array Fix

标签: 暴力枚举(brute force)动态规划(dp)贪心策略(greedy)实现问题,编程技巧,模拟(implementation)

题目大意

  • 有一个长度为 n 的数组 a,对与a中每个元素 0 ≤ ai ≤ 99
  • 可以任意次数对a 中数拆分放在原位,例如:19 拆分为1和9
  • 问:能否通过拆分使 a 中元素以非降序排序

思路

  • 贪心:如果前面数字能拆则拆,以使前面数字减小
  • 判断前面数字能拆,如果十位大于个位不能拆,或十位拆开要小于前面的数不能拆。
  • 例如:42 89 判断是否能拆
    • 首先42拆开为4 2不是非降序所以不拆,此时89前面为42
    • 89拆开8 9,但8 < 42所以不拆

AC代码

#include<bits/stdc++.h>
using namespace std;
void solve()
{int n; cin >> n;int t = 0, cnt = 0;for(int i = 1;i <= n; i++){int x; cin >> x;if((x%10)>=(x/10)&&(x/10)>=t) t = x%10;else if(x < t){cout << "NO\n";return;}else t = x;}cout << "YES\n";
}
int main()
{int T; cin >> T;while(T--)solve();return 0;
}

C题:Arrow Path

标签: 深度优先搜索及其变种(dfs and similar)图论(graphs)最短路算法(shortest paths)

题目大意

  • 有一个网格,由 2 行和 n 列组成。行的编号从从 1 ~ 2 。列的编号 1 ~ n 。网格的每个单元格都包含一个箭头,指向左边或右边。没有箭头指向网格外。
  • 从 (1,1)格开始。每隔一秒钟,下面两个动作会相继发生:
    1. 首先,向左、向右、向下或向上移动(不能试图移动到网格外,也不能跳过移动);
    1. 然后,沿着放置在当前单元格中的箭头移动(移动后最终到达的单元格)。
  • 判断能否到达 (2, n)单元格。

思路

 >  >*>*>*>  <>  *>*>*>*  <
  • 方法一、如果出现如上中间位置倾斜两点( >的位置 )同时为<则不可通过
    • 例如:(1, 2) 与 (2, 3)、(2, 3)与(1, 4)不能同时是<
  • 方法二、bfs或 dfs遍历一遍即可

方法一、AC代码

#include <iostream>
#include <string>
using namespace std;
void solve()
{int n;string s[2];cin >> n >> s[0] >> s[1];bool bad = false;for(int i = 1; i < n; i++)bad |= (s[(i-1)%2][i] == '<' && s[i%2][i-1] == '<');cout << (bad? "NO\n":"YES\n");
}
int main(){int T; cin >> T;while(T--)solve();return 0;
}

方法二、AC代码

void dfs(int x, int y) {if (v[x][y]) return ;v[x][y] = 1;if (x == 2 && y == n) return ;for (int k = 1; k <= 4; k++) {int tx = x + dx[k], ty = y + dy[k];if (tx <= 0 || tx >= 3 || ty <= 0 || ty >= n + 1) continue;ty += d[tx][ty];if (tx <= 0 || tx >= 3 || ty <= 0 || ty >= n + 1) continue;if (!v[tx][ty]) dfs(tx, ty);}
}
int main()
{T = read();while (T--) {ans = 0;n = read();for (int i = 1; i <= 2; i++) {scanf("%s", &ch);for (int j = 0; j < n; j++) {if (ch[j] == '>') d[i][j + 1] = 1;else d[i][j + 1] = -1;v[i][j + 1] = 0;}}dfs(1, 1);printf(v[2][n] ? "YES\n" : "NO\n");}return 0;
}

logo

//へ     /|
//  /\7    ∠_/
//  / │   / /
// │ Z _,< /   /`ヽ
// │     ヽ   /  〉
//  Y     `  /  /
// イ● 、 ●  ⊂⊃〈  /
// ()  へ    | \〈
//  >ー 、_  ィ  │ //
//  / へ   / ノ<| \\
//  ヽ_ノ  (_/  │//
//	  7       |/
//
/*__   _,--="=--,_   __/  \."    .-.    "./  \/  ,/  _   : :   _  \/` \\  `| /o\  :_:  /o\ |\__/`-'| :="~` _ `~"=: |\`     (_)     `/.-"-.   \      |      /   .-"-.
.---{     }--|  /,.-'-.,\  |--{     }---.)  (_)_)_)  \_/`~-===-~`\_/  (_(_(_)  (
(                         				))                                     (
'---------------------------------------'
*/

这篇关于Educational Codeforces Round 163 (Rated for Div. 2) (A~C)的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/816556

相关文章

Codeforces 158B

很久没有刷题了,刚刚有小学弟问了这道题,AC之后贴上来吧。水~~~ #include <cstdio>#include <cmath>int main() {int n;while(scanf("%d", &n) != EOF) {int a = 0, b = 0, c = 0, d = 0;int arr[100001];for (int i = 0; i < n; ++

Codeforces April Fools Day Contest 2014(附官方题解)

Codeforces2014年愚人节的坑题。。。但还是感觉挺好玩的。。。 A. The Great Game time limit per test 1 second memory limit per test 256 megabytes input standard input output standard output Two teams mee

Codeforces April Fools Day Contest 2013

2013年愚人节的坑题。。。 A. Mysterious strings time limit per test 2 seconds memory limit per test 256 megabytes input standard input output standard output Input The input contains a sin

课时163:脚本发布_大型脚本_流程控制

2.2.5 流程控制 学习目标 这一节,我们从 基础知识、简单实践、小结 三个方面来学习 基础知识 简介 需求:如果我给脚本输入的参数是deploy,那么脚本才执行,否则的话,提示该脚本的使用帮助信息,然后退出提示信息:脚本 deploy.sh 的使用方式: deploy.sh [ deploy ] 分析:1、脚本传参,就需要在脚本内部进行调用参数2、脚本的帮助信息3、脚本内容就需

力扣SQL50 项目员工 I ROUND AVG

Problem: 1075. 项目员工 I 👨‍🏫 参考题解 Code select project_id,ROUND(AVG(e.experience_years),2) as average_yearsFROMproject as pLEFT JOINemployee as eONp.employee_id = e.employee_idGROUP BYp.proje

[Codeforces 451B] Sort the Array (实现)

Codeforces - 451B 给定一个序列,其中每个数都不相同 问是否能在翻转其中一段后,整个序列变得单调递增 实现题 首先设一个 B B数组为 AA数组排序后的结果 由于只能翻转一个区间,那么我假装 A是满足要求的 找到最小的 A[l]≠B[l] A[l] \ne B[l],最大的 A[r]≠B[r] A[r] \ne B[r], 翻转的区间将会是 [l,r

[Codeforces 451A] Game With Sticks (博弈)

Codeforces - 451A N根横向木棍,M根纵向木棍组成了一个网格图 每次可以选择一个交点,去掉所有通过这个交点的木棍 两个人交替进行这个游戏,问最后谁能胜利 每次选择的一个交点,必然去掉了一根横向木棍和纵向木棍 所以每次 N和 M都减一 当其中有一个为 0的时候,就是先手必败态 所以只和 N、M中较小的那个的奇偶性有关 #pragma comment(link

[Codeforces 166B] Polygons (点在凸多边形内)

Codeforces - 166B 判断任意多边形 B是否严格在凸多边形 A内部 点在凸多边形内部试板题 如果 B的所有顶点在 A内,则 B在 A内 由于 A的顶点有 105 10^5个,B的顶点有 104 10^4 个 所以不能用 (n) \mathcal{O}(n)的暴力判断 有一个 (logn) \mathcal{O}(logn) 的二分做法 基本原理是用

[Codeforces - Gym10081D (NEERC)] Distribution in Metagonia (构造+数的拆分)

Codeforces - Gym10081D (NEERC) 给定一个数,将其变成若干个数的和 如果这些数有因子,那么只能是 2或 3 并且这些数两两不能除尽 构造题 如果这个数为 1,那么答案就为 1 若不为 1,那么如果他是奇数 那么我减去最大的一个 3次幂转化为一个偶数, 再不断地提出 2,变成一个奇数,循环直到其变为 1 所以这个数 N=3a1+2b1(3a2

[Codeforces - Gym100801H (NEERC)] Hash Code Hacker (字符串构造)

Codeforces - Gym100801H (NEERC) 给定一个字符串hash,为 ∑i=0len−1str[i]×31len−1−i \displaystyle\sum_{i=0}^{len-1} str[i]\times 31^{len-1-i} 求 K K个长度不超过 1000的字符串,使得他们的 hash值相等 其中每个 hash值是 32位有符号整数,K≤1000K\l