文章目录
A - Case of the Zeros and Ones CodeForces - 556A
#include<bits/stdc++.h>
using namespace std;
const int maxn=2e5+10;
int n;
int a,b;
string s;
int main(){
scanf("%d",&n);
cin>>s;
for(int i=0;i<s.length();i++){
if(s[i]=='0'){
a++;
}
if(s[i]=='1'){
b++;
}
}
int sum=min(a,b);
printf("%d\n",n-2*sum);
return 0;
}
B - Case of Fake Numbers CodeForces - 556B
这道题其实很简单,但是就是读不懂题呀,唉,难受。
题意:
奇数项+1,偶数项 -1,范围是0~n-1,查看有没有顺序正好是0,1,2,…,n-1的时候
#include<bits/stdc++.h>
using namespace std;
const int maxn=1e3+10;
int s[maxn];
int n,m;
int main(){
scanf("%d",&n);
for(int i=1;i<=n;i++)
scanf("%d",&s[i]);
for(int i=1;i<=n;i++){
if(s[i]==i-1){
m++;
}
}
if(n==m){
cout<<"Yes"<<endl;
return 0;
}
m=0;
int k=n;
while(k--){
for(int i=1;i<=n;i++){
if(i%2!=0){
s[i]=(s[i]+1)%n;
// cout<<s[i]<<" ";
}
else{
s[i]=s[i]-1;
if(s[i]==-1)
s[i]=n-1;
// cout<<s[i]<<" ";
}
}
// cout<<endl;
m=0;
for(int i=1;i<=n;i++){
if(s[i]==i-1){
m++;
}
}
if(m==n){
cout<<"Yes"<<endl;
return 0;
}
}
cout<<"No"<<endl;
return 0;
}
C - Case of Matryoshkas CodeForces - 556C
注意:理解好这道题的题意,如果不为1就全拆掉,如果为1,就把后面不连续的拆掉
#include<bits/stdc++.h>
using namespace std;
const int maxn=1e5+10;
int n,k;
bool ok;
int sum,num,cnt;
int a[maxn],s[maxn];
int main(){
scanf("%d%d",&n,&k);
for(int i=1;i<=k;i++){
int m;
ok=false;
num=0;
scanf("%d",&m);
scanf("%d",&a[1]);
if(a[1]!=1){
ok=true;
num++;
}
for(int j=2;j<=m;j++){
scanf("%d",&a[j]);
if(ok){
num++;
}
if(!ok&&a[j]!=a[j-1]+1){
ok=true;
num++;
}
}
// cout<<num<<endl;
sum+=num;
if(a[1]!=1)num--;
sum+=num;
}
printf("%d\n",sum);
return 0;
}