Codeforces #634 div3

A.Three Blocks Palindrome (easy version)

    #include<stdio.h>
    int main(){
        int t;
        scanf("%d",&t);
        while(t--){
            int n;
            scanf("%d",&n);
//官方题解  printf("%d\n",(n-1)/2);
            if(n<3){
             printf("%d\n",0);
             continue;
             }
             int res=0;
             if(n&1) res=n/2;
             else res=n/2-1;
             printf("%d\n",res);
        }
        return 0;
    } 

B. Construct the String
思路:构造一个长度为a的字符串,其中不同字符个数为b个,将其重复便可得到所需字符串。

    #include<stdio.h>
    int main(){
        int t;
        scanf("%d",&t);
        while(t--){
            int n,a,b;
            scanf("%d %d %d",&n,&a,&b);
            char s[2010];
            int cnt=0;
            for(int i=0;i<a-b+1;i++)        s[cnt++]='a';
            char ss='a';
            for(int i=a-b+1,j=1;i<a;i++){
                s[cnt++]=(ss+j);
                j++;
            }
            for(int i=a;i<n;i++) s[cnt++]=s[i-a];
            for(int i=0;i<cnt;i++) putchar(s[i]);
            printf("\n");
                
        }
        return 0;
    } 

C. Two Teams Composing
思路:得到字符串中不同字符的个数与单个出现最多的次数,结果便是二者小的哪一个,特殊情况是相同元素那一组多一个的话可以匀给另一组一个。

    #include<stdio.h>
    #include<string.h>
    #include<algorithm>
    using namespace std;
    int main(){
        int t;
        scanf("%d",&t);
        while(t--){
            int n; 
            scanf("%d",&n);
            int x; 
            int cnt1[n+1];
            memset(cnt1,0,sizeof(cnt1));
            for(int i=0;i<n;i++){
             scanf("%d",&x);
             cnt1[x]++;
             }
              int maxnum=0,cnt=0;
              for(int i=0;i<=n;i++){
                if(cnt1[i]!=0) cnt++;
                 if(cnt1[i]>maxnum) maxnum=cnt1[i];
              }
     
            if(maxnum>cnt) printf("%d\n",cnt);
            else if(cnt==maxnum) printf("%d\n",cnt-1);
            else  printf("%d\n",maxnum);
        }
        return 0;
    } 

D. Anti-Sudoku
思路:整体遍历,把所有的2替换为1,便可以达到要求。

    #include<stdio.h>
    int main(){
        int t;
        scanf("%d",&t);
        while(t--){
            char s[9][9];
            for(int i=0;i<9;i++) scanf("%s",s[i]);
            for(int i=0;i<9;i++){//puts多香,我写代码时候没脑子
                for(int j=0;j<9;j++){
                    if(s[i][j]=='2')
                    s[i][j]='1';
                   putchar(s[i][j]);
                }
                putchar('\n');
            }
            
        }
    } 

E1. Three Blocks Palindrome (easy version)
思路:
E2. Three Blocks Palindrome (hard version)
思路:

©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

相关阅读更多精彩内容

友情链接更多精彩内容