Codeforces Round 950 (Div. 3)

早上好!(00:50:13)

这次的比赛挺好的:总共做了 6 题。

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

这道题是小丑题,读题时有两个坑:

  1. 取的不是第 k 个正方体,而是前 k 个正方体;
  2. 要注意 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 中国大陆许可协议进行许可。

posted @   辜铜星  阅读(349)  评论(4编辑  收藏  举报
相关博文:
阅读排行:
· 全网最简单!3分钟用满血DeepSeek R1开发一款AI智能客服,零代码轻松接入微信、公众号、小程
· .NET 10 首个预览版发布,跨平台开发与性能全面提升
· 《HelloGitHub》第 107 期
· 从文本到图像:SSE 如何助力 AI 内容实时呈现?(Typescript篇)
· 全程使用 AI 从 0 到 1 写了个小工具
点击右上角即可分享
微信分享提示
评论
收藏
关注
推荐
深色
回顶
收起