AtCoder Regular Contest 131(A,B,C)
A
这个大意就是很容易做出来,只是有一点要注意,对于第二个字符串,如果小于\(2\),那么比如\(1\),,这些可能是进位形成的,所以我们需要补一个\(0\),进位之后就是\(1\)了
#include <iostream>
#include <string>
using namespace std;
#define int long long
int x,y;
signed main ()
{
cin>>x>>y;
cout<<x;
if (y/2<1)
{
cout<<0;
}
if (y&1)
{
y=y*10ll+2;
}
cout<<y/2ll<<'\n';
system ("pause");
return 0;
}
B
就是有一个网格,每一个网格有\(5\)种选择,我们要保证格子和它相邻的格子的数字不一样,那么我们可以知道每一个格子都一定有一种是满足条件的
所以我们可以一个一个的找(不要递归,我错了,可能是我的方式不对)
正确代码
#include <iostream>
#include <string>
#include <map>
using namespace std;
#define int long long
const int maxn=700+10;
int x,y;
int h,w;
string s[maxn];
int dx[4]={0,0,-1,1};
int dy[4]={-1,1,0,0};
char check(int x,int y)
{
if (s[x][y]>='1'&&s[x][y]<='5') return s[x][y];
bool vis[6];
for (int i=1;i<=5;i++)
{
vis[i]=true;
}
for (int d=0;d<4;d++)
{
int tx=x+dx[d];
int ty=y+dy[d];
if (tx>h||tx<1||ty>w||ty<1) continue;
/* int now=check(tx,ty)-'0';*///错误的
int now;
if (s[tx][ty]=='.') now=0;
else now=s[tx][ty]-'0';
vis[now]=false;
}
for (int i=1;i<=5;i++)
{
if (vis[i])
{
s[x][y]=i+'0';
return s[x][y];
}
}
}
signed main ()
{
cin>>h>>w;
for (int i=1;i<=h;i++)
{
cin>>s[i];
s[i]=" "+s[i];
}
for (int i=1;i<=h;i++)
{
for (int j=1;j<=w;j++)
{
cout<<check(i,j);
}
cout<<'\n';
}
system ("pause");
return 0;
}
C
这个是给你\(n\)个数,两个人每次拿出一个数,如果某一个人拿出了一个数之后,剩下的数异或值为\(0\),那么这个人就赢了
对于这个比赛,在什么时候赢呢
如果一个数是\(x\),此时的所有数异或值也是\(x\),那么拿走这个\(x\)后面的异或值是\(0\),这个人赢了
如果存在不可以一步到位的话
那么我们可以用二进制的每一位的\(1\)的数量来看
那么我们可以知道此时一定会存在一些位置上的\(1\)的数量为奇数,要想赢,只有把每一位的\(1\)都变成偶数个,那么先手需要把删除一个,变成偶数个\(1\)了,但是我们一步并不能赢,还有其他的奇数个\(1\),那么后手为了不让先手赢,他会把先手那个位置减少为偶数个的\(1\)变成奇数个(又删除一个),然后这样不管谁删除,后面的也跟着来,那么输赢就只能看谁可以删除最后一个,没有数,异或也是\(0\),那么我们可以用奇偶性来判断
#include <iostream>
using namespace std;
#define int long long
const int maxn=400000+10;
int a[maxn];
signed main ()
{
int n;
cin>>n;
int x=0;
for (int i=1;i<=n;i++)
{
cin>>a[i];
x=x^a[i];
}
if (n&1)
{
cout<<"Win\n";
}
else
{
bool win=false;
for (int i=1;i<=n;i++)
{
if (a[i]==x)
{
win=true;
break;
}
}
if (win)
{
cout<<"Win\n";
}
else
{
cout<<"Lose\n";
}
}
system ("pause");
return 0;
}
标签:AtCoder,那么,int,异或,long,131,Regular,maxn,include
From: https://www.cnblogs.com/righting/p/17180221.html