每晚的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的方格中每个数都出现了一遍
每个数组也出现了九次
所以我们可以直接将某个数字直接替换成另外一个出现的数字
那么每行每列每个33的方格里面都有两个相同的数字了
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]);
}
}
}