Codeforces Round #752 (Div. 2) ABCD
2021/10/31 6:13:48
本文主要是介绍Codeforces Round #752 (Div. 2) ABCD,对大家解决编程问题具有一定的参考价值,需要的程序猿们随着小编来一起学习吧!
A. Era
维护一个新数组的末尾位置变量pos,遍历的时候不断更新即可。
#include <iostream> #include <vector> #include <algorithm> #include <cstring> #include <map> #include <set> #define mod 1000000007 //#define mod 998244353 #define ll long long #define pb push_back using namespace std; ll fpow(ll a, ll b) { ll ans = 1; for(; b; b >>= 1) { if(b & 1) ans = ans * a % mod; a = a * a % mod; } return ans; } ll gcd(ll a, ll b) { return b ? gcd(b, a % b) : a; } int a[105], n; int main() { int T = 1; cin >> T; while(T--) { cin >> n; for(int i = 1; i <= n; i++) { cin >> a[i]; } ll ans = 0; a[0] = 0; int pos = 1; for(int i = 1; i <= n; i++) { if(a[i] > pos) { ans += a[i] - pos; pos += a[i] - pos; } pos++; } cout << ans << endl; } return 0; }
B. XOR Specia-LIS-t
注意到长度为1的序列也满足单调递增的条件(虽然比较特殊),所以如果n为偶数一定可以(把序列分为n个子数组,每个子数组的最长单调递增子列长度为1,且一共有偶数个);如果n为奇数的话,只要整个序列不是单调递增的话一定可以(把a[i] >= a[i + 1]的这两个数拿出来,其最长递增子序列长度为1,剩下的n - 2个数自己构成一个子数组,这样保证xor和为0),否则不可(因为每个子数组的LCS就是本身,整个序列一定要被划分为若干对,n为奇数显然不可能划分为若干“对”)
#include <iostream> #include <vector> #include <algorithm> #include <cstring> #include <map> #include <set> #define mod 1000000007 //#define mod 998244353 #define ll long long #define pb push_back using namespace std; ll fpow(ll a, ll b) { ll ans = 1; for(; b; b >>= 1) { if(b & 1) ans = ans * a % mod; a = a * a % mod; } return ans; } ll gcd(ll a, ll b) { return b ? gcd(b, a % b) : a; } ll n, a[100005]; int main() { int T = 1; cin >> T; while(T--) { cin >> n; for(int i = 1; i <= n; i++) { cin >> a[i]; } if(n % 2 == 0) puts("YES"); else { bool ok = 0; for(int i = 2; i <= n; i++) { if(a[i] <= a[i - 1]) { ok = 1; break; } } if(ok) puts("YES"); else puts("NO"); } } return 0; }
C. Di-visible Confusion
这个题其实可以暴力,对于每个数的位置pos直接判断2到pos+1有没有满足条件的位置(因为随着数列的变化,一个数的位置一定是单调不增的),如果没有则输出NO。所有数都可以则输出YES。
那么为什么能暴力呢?因为如果2到pos+1所有位置都不满足条件(即a[i]都是它们的倍数),如果考虑2到pos+1所有的素数,a[i]一定是这些素数若干次幂的乘积(唯一分解定理),而1到100所有的素数的乘积就已经爆int了,所以内循环根本跑不到100,故暴力可行。
#include <iostream> #include <vector> #include <algorithm> #include <cstring> #include <map> #include <set> #define mod 1000000007 //#define mod 998244353 #define ll long long #define pb push_back using namespace std; ll fpow(ll a, ll b) { ll ans = 1; for(; b; b >>= 1) { if(b & 1) ans = ans * a % mod; a = a * a % mod; } return ans; } ll gcd(ll a, ll b) { return b ? gcd(b, a % b) : a; } ll n, a[100005]; int main() { int T = 1; cin >> T; while(T--) { cin >> n; for(int i = 1; i <= n; i++) { cin >> a[i]; } //最后一定是一个奇数 bool ok = 1; for(int i = 1; i <= n; i++) { bool flag = 0; for(int j = 2; j < i + 2; j++) { if(a[i] % j != 0) { flag = 1; break; } } if(!flag) { cout << "NO" << endl; ok = 0; break; } } if(ok) cout << "YES" << endl; } return 0; }
D. Moderate Modular Mode
实际上是分类讨论的构造题,具体怎么构造见代码。对于最后一种情况画一下数轴就比较好理解了。
#include <iostream> #include <vector> #include <algorithm> #include <cstring> #include <map> #include <set> #define mod 1000000007 //#define mod 998244353 #define ll long long #define pb push_back using namespace std; ll fpow(ll a, ll b) { ll ans = 1; for(; b; b >>= 1) { if(b & 1) ans = ans * a % mod; a = a * a % mod; } return ans; } ll gcd(ll a, ll b) { return b ? gcd(b, a % b) : a; } int a[105], n; int main() { int T = 1; cin >> T; while(T--) { ll x, y; cin >> x >> y; if(x == y) { cout << x << endl; continue; } if(x > y) { cout << x + y << endl; } else { if(y % x == 0) { cout << x << endl; } else { ll n = (x + y) / 2; if(n % x == y % n) { cout << n << endl; } else { n = y - (y % x) / 2; cout << n << endl; } } } } return 0; }
这篇关于Codeforces Round #752 (Div. 2) ABCD的文章就介绍到这儿,希望我们推荐的文章对大家有所帮助,也希望大家多多支持为之网!
- 2024-12-24怎么切换 Git 项目的远程仓库地址?-icode9专业技术文章分享
- 2024-12-24怎么更改 Git 远程仓库的名称?-icode9专业技术文章分享
- 2024-12-24更改 Git 本地分支关联的远程分支是什么命令?-icode9专业技术文章分享
- 2024-12-24uniapp 连接之后会被立马断开是什么原因?-icode9专业技术文章分享
- 2024-12-24cdn 路径可以指定规则映射吗?-icode9专业技术文章分享
- 2024-12-24CAP:Serverless?+AI?让应用开发更简单
- 2024-12-23新能源车企如何通过CRM工具优化客户关系管理,增强客户忠诚度与品牌影响力
- 2024-12-23原创tauri2.1+vite6.0+rust+arco客户端os平台系统|tauri2+rust桌面os管理
- 2024-12-23DevExpress 怎么实现右键菜单(Context Menu)显示中文?-icode9专业技术文章分享
- 2024-12-22怎么通过控制台去看我的页面渲染的内容在哪个文件中呢-icode9专业技术文章分享