记录编号 362523 评测结果 AAAAAAAAAA
题目名称 [HAOI 2015]数组游戏 最终得分 100
用户昵称 GravatarFoolMike 是否通过 通过
代码语言 C++ 运行时间 1.746 s
提交时间 2017-01-07 17:37:07 内存使用 11.73 MiB
显示代码纯文本
#include<cstdio>
#define rint register int
const int N=1e6+10;
int n,T,sg[N],sg_[N],vis[N];
inline int SG(int x){return x<N?sg[x]:sg_[n/x];}
void solve(int x){
	if (SG(x)) return;
	for (rint l=2,r;l<=x;l=r+1)
		r=x/(x/l),solve(x/l);
	static int C=0;C++;
	int now=0,ans=0;
	vis[0]=C;
	for (rint l=2,r,Sg;l<=x;l=r+1){
		Sg=SG(x/l);
		r=x/(x/l);
		vis[now^Sg]=C;
		if ((r-l+1)&1) now^=Sg;
	}
	while (vis[ans]==C) ans++;
	if (x<N) sg[x]=ans;else sg_[n/x]=ans;
}
int main()
{
	freopen("haoi2015_t3.in","r",stdin);
	freopen("haoi2015_t3.out","w",stdout);
	scanf("%d%d",&n,&T);
	solve(n);
	while (T--){
		int sum=0,k,x;
		scanf("%d",&k);
		while (k--) scanf("%d",&x),sum^=SG(n/x);
		puts(sum?"Yes":"No");
	}
	return 0;
}