A. Remove a Progression
题意:有一个1~n的序列,每次从头开始删掉第i个数,问到不能删除的时候第x的位置上的数是多少。
题意:简单推一下,发现每次删掉的数都是奇数。那么能保留的x位置上的数就是x*2。
#include
using namespace std;
int main()
{
int T;
cin>>T;
while(T--){
int n,t;
cin>>n>>t;
cout<
B. Yet Another Crosses Problem
题意:有一张只含有黑色和白色方块的棋盘。问最少要涂多少个黑色方块,使棋盘上存在,一行,一列都是黑色方块的情况。
这种情况。最优解应该是将方块画在右边的十字上。数据范围不大,直接暴力即可。
#include
using namespace std;
int main()
{
int T;
scanf("%d",&T);
while(T--){
int n,m;
scanf("%d%d",&n,&m);
char s[n+2][m+2];
int a[n+2]={0},b[m+2]={0};
for(int i=1;i<=n;++i){
scanf("%s",s[i]+1);
for(int j=1;j<=m;++j){
if(s[i][j]=='*') a[i]++,b[j]++;
}
}
int ans = 1e9;
for(int i=1;i<=n;++i){
for(int j=1;j<=m;++j){
int t = (m-a[i])+(n-b[j]);
if(s[i][j]=='.') t--;
ans=min(ans,t);
}
}
printf("%d\n",ans);
}
}
C. From S To T
题意:给你三个串,S,T,P。你可以将P串的元素添加到S串中,问能否使S串和T串相等。
题解:直接模拟即可。让S串和T串匹配,相同就继续,不相同就去P中找字母填上。
#include
using namespace std;
int main()
{
int T;
scanf("%d",&T);
while(T--){
char s[110],t[110],p[110];
int sum[30]={0};
scanf("%s%s%s",s+1,t+1,p+1);
int ls=strlen(s+1);
int lt=strlen(t+1);
int lp=strlen(p+1);
for(int i=1;i<=lp;++i) sum[p[i]-'a'+1]++;
int i=1,j=1;
int flag=1;
if(ls>lt) {
puts("NO");
continue;
}
while(flag){
if(j==lt+1&&i==ls+1) break;
if(s[i]==t[j]){
i++;j++;continue;
}else{
if(sum[t[j]-'a'+1]){
sum[t[j]-'a'+1]--;
j++;
}
else flag=0;
}
}
puts(flag?"YES":"NO");
}
}
D. 1-2-K Game
题意:两个人玩游戏。有一个n,每个人每一轮可以走一步,走两步,或者走k步。如果哪个人遇到不能走的局面,则这个人输。
题解:用SG函数打表。附上打表程序。
#include
using namespace std;
int main() {
int T;
scanf("%d", &T);
for(int j = 1; j <= T; j++) {
int k = j;
string s;
for(int jj = 0; jj <= 110; jj++)
s.push_back('.') ;
vector v;
v.push_back(1);
v.push_back(2);
v.push_back(k);
for(int i = 1; i < 100; i++) {
for(auto d : v) {
if(i - d >= 0 && s[i - d] == '.')
s[i] = '1';
}
}
cout <
1是先手必胜,' . '是先手必败。
最后得到规律,就不写了,直接看代码把。
#include
using namespace std;
int main()
{
int T;
scanf("%d",&T);
while(T--){
int n,k;
scanf("%d%d",&n,&k);
if(k%3!=0){
n%=3;
if(n) puts("Alice");
else puts("Bob");
}
else {
n%=(k+1);
if(n==k) puts("Alice");
else{
n%=3;
if(n) puts("Alice");
else puts("Bob");
}
}
}
}