Educational Codeforces Round 105 (Rated for Div. 2)
A. ABC String
题目:就是用‘(’和‘)’来代替A,B,C并与之对应,问是不是存在这样的对应关系使得'('和‘)'正好匹配
思路:第一个和最后一个字母是确定的左括号或者是右括号,这样就还剩下一个字母没有进行讨论,然后假设一下,分成两种情况进行计算,只要有一种情况满足就好
代码:
1 #include<iostream> 2 #include<cstdio> 3 #include<cmath> 4 #include<algorithm> 5 #include<cstring> 6 using namespace std; 7 int main(){ 8 int t; 9 scanf("%d",&t); 10 while(t--){ 11 char s[100]; 12 getchar(); 13 scanf("%s",&s); 14 int a=0,b=0,c=0; 15 int z=0,y=0; 16 int flag1=0,flag2=0; 17 for(int i=0;i<strlen(s);i++){ 18 if(s[i]==s[0]){ 19 z++; 20 }else if(s[i]==s[strlen(s)-1]){ 21 y++; 22 }else{ 23 z++; 24 } 25 if(y>z){ 26 flag1=1; 27 } 28 } 29 if(z!=y){ 30 flag1=1; 31 } 32 z=0; 33 y=0; 34 for(int i=0;i<strlen(s);i++){ 35 if(s[i]==s[0]){ 36 z++; 37 }else if(s[i]==s[strlen(s)-1]){ 38 y++; 39 }else{ 40 y++; 41 } 42 if(y>z){ 43 flag2=1; 44 } 45 } 46 if(z!=y){ 47 flag2=1; 48 } 49 z=0; 50 y=0; 51 if(flag1==1&&flag2==1){ 52 printf("NO\n"); 53 }else{ 54 printf("YES\n"); 55 } 56 57 58 } 59 }
B. Berland Crossword
题目:给定一个n×n的方格,起初都是空白的,给定第一行最后一行第一列最后一列会有多少个空格需要涂黑,问是不是有满足条件的涂色方法满足要求
思路:影响排布的只有四个角上的代码,那么就直接进行模拟从0-1四个角,只要有一个满足条件就可以,
代码:
1 #include<iostream> 2 #include<cstdio> 3 #include<cmath> 4 #include<algorithm> 5 #include<cstring> 6 using namespace std; 7 int n,u,r,l,d; 8 int check(int i,int j,int k,int z){ 9 if(i+j+n-2<u||u<i+j) return 0; 10 if(j+k+n-2<r||r<j+k) return 0; 11 if(z+k+n-2<d||d<z+k) return 0; 12 if(i+z+n-2<l||l<i+z) return 0; 13 return 1; 14 }//问题出在了全局变量和局部变量的问题上 15 int main(){ 16 int t; 17 scanf("%d",&t); 18 while(t--){ 19 // int n,u,r,l,d; 20 int uu=0,rr=0,ll=0,dd=0; 21 int flag=0; 22 scanf("%d %d %d %d %d",&n,&u,&r,&d,&l); 23 for(int i=0;i<=1;i++){ 24 for(int j=0;j<=1;j++){ 25 for(int k=0;k<=1;k++){ 26 for(int z=0;z<=1;z++){ 27 if(check(i,j,k,z)==1) flag=1; 28 } 29 } 30 } 31 } 32 if(flag==1){ 33 printf("YES\n"); 34 }else{ 35 printf("NO\n"); 36 } 37 } 38 }
这套题告诉我最多的就是,有些变化少的东西,规律找不到就可以从头考虑是不是该进行模拟,然后一个一个的进行判断,毕竟很多东西不是总存在规律,而且有的题目范围也不是很大

浙公网安备 33010602011771号