Codeforces Round #634 (Div. 3)abcd

每晚的cf训练重新启动
昨天晚上这套简单一些
四题出的还挺快的

A. Candies and Two Sisters

题目思路

奇数直接除二就好 偶数先减一再除二

ac代码

#include <stdio.h>
#include <iostream>
#include <algorithm>
#include <math.h>
#include <string.h>
#include <vector>
#include <stack>
#include <queue>
#include <map>
#include <set>
#include <utility>
#define pi 3.1415926535898
#define ll long long
#define lson rt<<1
#define rson rt<<1|1
#define eps 1e-6
#define ms(a,b) memset(a,b,sizeof(a))
#define legal(a,b) a&b
#define print1 printf("111\n")
using namespace std;
const int maxn = 2e5+10;
const int inf = 0x3f3f3f3f;
const ll llinf =0x3f3f3f3f3f3f3f3f;
const int mod = 1e9+7;
 
char a[maxn];
int b[maxn];
 
int main()
{
    int t;
    scanf("%d",&t);
    while(t--)
    {
        int n;
        scanf("%d",&n);
        if(n%2)
            printf("%d\n",n/2);
        else
            printf("%d\n",(n-1)/2);
    }
}

B. Construct the String

题目思路

跟之前cf上做的一道题很相似 就构造一个长度为a的数组x
先给x数组填充b个不相同的字符
之后全部填充a就好
在输出的时候对a数组循环输出就好

ac代码

#include <stdio.h>
#include <iostream>
#include <algorithm>
#include <math.h>
#include <string.h>
#include <vector>
#include <stack>
#include <queue>
#include <map>
#include <set>
#include <utility>
#define pi 3.1415926535898
#define ll long long
#define lson rt<<1
#define rson rt<<1|1
#define eps 1e-6
#define ms(a,b) memset(a,b,sizeof(a))
#define legal(a,b) a&b
#define print1 printf("111\n")
using namespace std;
const int maxn = 2e5+10;
const int inf = 0x3f3f3f3f;
const ll llinf =0x3f3f3f3f3f3f3f3f;
const int mod = 1e9+7;
 
int ans[maxn];
char tem[maxn];
 
int main()
{
    int t;
    scanf("%d",&t);
    while(t--)
    {
        int n,a,b;
        scanf("%d%d%d",&n,&a,&b);
        for(int i=1;i<=a;i++)
        {
            if(i<=b)
            {
                tem[i]='a'+i-1;
            }else
            {
                tem[i]='a';
            }
        }
        for(int i=1;i<=n;i++)
        {
            if(i%b==0)
                printf("%c",tem[b]);
            else
                printf("%c",tem[i%b]);
        }
        printf("\n");
    }
}

C. Two Teams Composing

题目思路

统计不相同的数的个数出现次数最多的数的出现次数
在比较大小分情况输出

ac代码

#include <stdio.h>
#include <iostream>
#include <algorithm>
#include <math.h>
#include <string.h>
#include <vector>
#include <stack>
#include <queue>
#include <map>
#include <set>
#include <utility>
#define pi 3.1415926535898
#define ll long long
#define lson rt<<1
#define rson rt<<1|1
#define eps 1e-6
#define ms(a,b) memset(a,b,sizeof(a))
#define legal(a,b) a&b
#define print1 printf("111\n")
using namespace std;
const int maxn = 2e5+10;
const int inf = 0x3f3f3f3f;
const ll llinf =0x3f3f3f3f3f3f3f3f;
const int mod = 1e9+7;
 
int a[maxn];
int vis[maxn];
 
int main()
{
    int t;
    scanf("%d",&t);
    while(t--)
    {
        int n;
        scanf("%d",&n);
        ms(vis,0);
        int cnt=0,num=0;
        for(int i=1;i<=n;i++)
        {
            scanf("%d",&a[i]);
            if(vis[a[i]]==0)
                cnt++;
            vis[a[i]]++;
            if(vis[a[i]]>num)
                num=vis[a[i]];
        }
        if(n==1)
            printf("0\n");
        else
        {
            if(cnt<num)
                printf("%d\n",cnt);
            else if(cnt>num)
                printf("%d\n",num);
            else
                printf("%d\n",cnt-1);
        }
    }
}

D. Anti-Sudoku

题目思路

注意题目给的条件 只能修改9个数
而数独在正确填写之后 每行每列每个33的方格中每个数都出现了一遍
每个数组也出现了九次
所以我们可以直接将某个数字直接替换成另外一个出现的数字
那么每行每列每个3
3的方格里面都有两个相同的数字了

ac代码

#include <stdio.h>
#include <iostream>
#include <algorithm>
#include <math.h>
#include <string.h>
#include <vector>
#include <stack>
#include <queue>
#include <map>
#include <set>
#include <utility>
#define pi 3.1415926535898
#define ll long long
#define lson rt<<1
#define rson rt<<1|1
#define eps 1e-6
#define ms(a,b) memset(a,b,sizeof(a))
#define legal(a,b) a&b
#define print1 printf("111\n")
using namespace std;
const int maxn = 2e5+10;
const int inf = 0x3f3f3f3f;
const ll llinf =0x3f3f3f3f3f3f3f3f;
const int mod = 1e9+7;
 
char a[10][10];
 
int main()
{
    int t;
    scanf("%d",&t);
    while(t--)
    {
        for(int i=0;i<9;i++)
        {
            scanf("%s",a[i]);
        }
        for(int i=0;i<9;i++)
        {
            for(int j=0;j<9;j++)
            {
                if(a[i][j]=='1')
                    a[i][j]='3';
            }
        }
        for(int i=0;i<9;i++)
        {
            printf("%s\n",a[i]);
        }
    }
}

猜你喜欢

转载自blog.csdn.net/daydreamer23333/article/details/107528669