Codeforces Round 950 (Div. 3)
早上好!(00:50:13)
这次的比赛挺好的:总共做了 题。
A. Problem Generator
直接 map 统计就行。
#include<bits/stdc++.h> using namespace std; const int MAXN = 2e5+10; int T,n,m; char a[MAXN]; map<char,int> k; signed main(){ scanf("%d",&T); while(T--){ k.clear(); scanf("%d%d",&n,&m); scanf("%s",a+1); for(int i = 1;i<=n;i++){ k[a[i]]++; } int cnt = 0; for(char i = 'A';i<='G';i++){ cnt+=max(0,m-k[i]); } printf("%d\n",cnt); } return 0; }
B. Choosing Cubes
这道题是小丑题,读题时有两个坑:
- 取的不是第 个正方体,而是前 个正方体;
- 要注意 a[m] 后面有多个的情况。
#include<bits/stdc++.h> using namespace std; const int MAXN = 2e5+10; int T,n,m,k,a[MAXN]; map<int,bool> apper; signed main(){ scanf("%d",&T); while(T--){ apper.clear(); scanf("%d%d%d",&n,&m,&k);a[n+1]=0; for(int i = 1;i<=n;i++){ scanf("%d",a+i); apper[a[i]]++; } m = a[m]; sort(a+1,a+1+n); reverse(a+1,a+1+n); if(a[k]>m) puts("no"); else{ if(a[k]==m&&a[k]==a[k+1]) puts("maybe"); else puts("yes"); } } return 0; }
C. Sofia and the Lost Operations
判断最后一个是否合法,前面的能否一一匹配。
#include<bits/stdc++.h> using namespace std; const int MAXN = 2e5+10; int T,n,a[MAXN],m,b[MAXN],c[MAXN]; map<int,int> apper,be; signed main(){ scanf("%d",&T); while(T--){ apper.clear();be.clear(); scanf("%d",&n); for(int i = 1;i<=n;i++){ scanf("%d",a+i); } for(int i = 1;i<=n;i++){ scanf("%d",b+i); apper[b[i]]++; } scanf("%d",&m); for(int i = 1;i<=m;i++){ scanf("%d",c+i); be[c[i]]++; } if(apper.find(c[m])==apper.end()) puts("no"); else{ bool bj = 1; for(int i = 1;i<=n;i++){ if(a[i]!=b[i]){ if(!be[b[i]]){ bj = 0; break; } be[b[i]]--; } } if(bj) puts("yes"); else puts("no"); } } return 0; }
D. GCD-sequence
直接前驱合法,后继合法,拼接就行。(代码有一点复杂,)注意的事情要注意。
#include<bits/stdc++.h> using namespace std; const int MAXN = 2e5+10; int T,n,a[MAXN]; int gcd[MAXN]; bool pre[MAXN],suc[MAXN]; map<int,int> apper,be; signed main(){ scanf("%d",&T); while(T--){ apper.clear();be.clear(); scanf("%d",&n); for(int i = 1;i<=n;i++){ scanf("%d",a+i); if(i>1) gcd[i] = __gcd(a[i],a[i-1]); } gcd[0] = gcd[1] = 0; gcd[n+1] = 0x3f3f3f3f; pre[1] = pre[2] = true; for(int i = 3;i<=n;i++){ pre[i] = pre[i-1]&&(gcd[i]>=gcd[i-1]); } suc[n] = suc[n-1] = true; for(int i = n-2;i>=1;i--){ suc[i] = suc[i+1]&&(gcd[i+1]<=gcd[i+2]); } bool fg = 0; for(int i = 2;i<n;i++){ int g = (__gcd(a[i-1],a[i+1])); if(pre[i-1]&&suc[i+1]&&g>=gcd[i-1]&&g<=gcd[i+2]){ fg = 1; break; } } if(fg||pre[n-1]||suc[2]) puts("Yes"); else puts("No"); } return 0; }
本文作者:辜铜星
本文链接:https://www.cnblogs.com/gutongxing/p/18229988
版权声明:本作品采用知识共享署名-非商业性使用-禁止演绎 2.5 中国大陆许可协议进行许可。
· 全网最简单!3分钟用满血DeepSeek R1开发一款AI智能客服,零代码轻松接入微信、公众号、小程
· .NET 10 首个预览版发布,跨平台开发与性能全面提升
· 《HelloGitHub》第 107 期
· 从文本到图像:SSE 如何助力 AI 内容实时呈现?(Typescript篇)
· 全程使用 AI 从 0 到 1 写了个小工具