Codeforces Educational Round 105
A ABC String (1494A)
签到题,注意从左往右数 “ ( ” 个数永远不小于 “ ) ” 个数即可
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62
| #include<iostream> using namespace std; int main() { int t; cin>>t; while(t--) { string a; bool b[55]={0}; int n=0,A=0,B=0,C=0; cin>>a; for(n=0;a[n]!='\0';n++); b[0]=1; for(int i=0;i<n;i++) { if(a[i]==a[0])b[i]=1; if(a[i]=='A')A++; if(a[i]=='B')B++; if(a[i]=='C')C++; } if(!(A==B+C||B==A+C||C==A+B)) cout<<"NO"<<endl; else { if(A==n/2) { if(a[0]=='A'); else { for(int i=1;i<n;i++)if(a[i]!='A')b[i]=1; } } else if(B==n/2) { if(a[0]=='B'); else { for(int i=1;i<n;i++)if(a[i]!='B')b[i]=1; } } else { if(a[0]=='C'); else { for(int i=1;i<n;i++)if(a[i]!='C')b[i]=1; } }
int exam=0; for(int i=0;i<n;i++) { if(b[i])exam++; else exam--; if(exam==-1)break; } if(exam==-1)cout<<"NO"<<endl; else cout<<"YES"<<endl; } } }
|
B Berland Crossword (1494B)
分析四个角,暴力这16种情况,在分析各边应该满足的条件
(这道题打比赛的时候想了一个小时没结果,第二天随便写写做出来了,熬夜降智,劝大家早睡(doge))
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39
| #include<iostream> using namespace std; int main() { int t; cin>>t; while(t--) { int n,a[4],scan=0; int b[16][8]; for(int i=0;i<16;i++) { int c=i; for(int j=0;j<4;j++) { b[i][j]=c%2; b[i][j+4]=c%2; c=c/2; } } cin>>n; for(int i=0;i<4;i++)cin>>a[i]; bool t=0; for(int i=0;i<16;i++) { t=1; for(int j=0;j<4;j++) if(a[j]<(b[i][j]+b[i][j+3])||a[j]>(n-2+b[i][j]+b[i][j+3]))t=0; if(t) { scan=i; break; } } if(t)cout<<"yes"<<endl; else cout<<"no"<<endl; } }
|