bzoj千题计划287:bzoj1228: [SDOI2009]E&D

时间:2023-03-08 20:31:15

http://www.lydsy.com/JudgeOnline/problem.php?id=1228

打SG函数表,找规律:

若n是奇数m是奇数,则SG(n,m)=0

若n是偶数m是偶数,则SG(n,m)=SG(n/2,m/2)+1

若n是偶数m是奇数,则SG(n,m)=SG(n,m+1)

若n是奇数m是偶数,则SG(n,m)=SG(n+1,m)

#include<cstdio>
#include<iostream> using namespace std; void read(int &x)
{
x=; char c=getchar();
while(!isdigit(c)) c=getchar();
while(isdigit(c)) { x=x*+c-''; c=getchar(); }
} int SG(int n,int m)
{
int ans=;
while()
{
if(n& && m&) return ans;
else if(n&) n++;
else if(m&) m++;
else
{
ans++;
n>>=;
m>>=;
}
}
} int main()
{
int T,t,n,m,ans;
read(T);
while(T--)
{
read(t); t>>=;
ans=;
while(t--)
{
read(n); read(m);
ans^=SG(n,m);
}
puts( ans ? "YES" : "NO" );
}
return ;
}