记录编号 |
157059 |
评测结果 |
AAAAAAAAAAAAAAAAAAAA |
题目名称 |
饥饿游戏 |
最终得分 |
100 |
用户昵称 |
ztx |
是否通过 |
通过 |
代码语言 |
C++ |
运行时间 |
0.860 s |
提交时间 |
2015-04-07 12:15:50 |
内存使用 |
0.29 MiB |
显示代码纯文本
/****************************************\
* Author : ztx
* Title : [cogs] 1603. 饥饿游戏
* ALG : 博弈论
* CMT :
* Time :
\****************************************/
#include <cstdio>
#define Rep(i,l,r) for(i=(l);i<=(r);i++)
#define Rev(i,r,l) for(i=(r);i>=(l);i--)
typedef long long ll ;
int CH , NEG ;
template <typename TP>inline void read(TP& ret) {
ret = NEG = 0 ; while (CH=getchar() , CH<'!') ;
if (CH == '-') NEG = true , CH = getchar() ;
while (ret = ret*10+CH-'0' , CH=getchar() , CH>'!') ;
if (NEG) ret = -ret ;
}
template <typename TP>inline void reads(TP& ret) {
while (ret=getchar() , ret<'!') ;
while (CH=getchar() , CH>'!') ;
}
int n , ans , SG , tot ;
int a[22] ;
inline void dfs(int i) {
if(!ans) {
if (!SG && tot) ans = 1 ;
//if (ans || i>n) return ;
if (i<=n) {
SG ^= a[i] ; tot ++ ;
dfs(i+1) ;
SG ^= a[i] ; tot -- ;
dfs(i+1) ;
}
}
}
main() {
int Time , i ;
freopen("hunger.in" ,"r",stdin ) ;
freopen("hunger.out","w",stdout) ;
read(Time) ;
while (Time --) {
read(n) ;
Rep (i,1,n) read(a[i]) ;
ans = 0 ; SG = 0;tot = 0 ;
dfs(1) ;
if (ans) puts("Yes") ;
else puts("No") ;
}
}
/*
#define maxn 22LL
int ret , j , i , n ;
int a[maxn] = {0} ;
inline int SG() {
ret = 0 ;
Rev (j,n-1,0)
if (i&(1<<j))
ret ^= a[j] ;
}
int main() {
int Time ;
#define READ
#ifdef READ
freopen("hunger.in" ,"r",stdin ) ;
freopen("hunger.out","w",stdout) ;
#endif
read(Time) ;
while (Time --> 0) {
read(n) ;
Rev (i,n-1,0)
read(a[i]) ;
Rev (i,(1<<n)-1,1)
if (SG(),!ret) {
puts("Yes") ;
goto CONT ;
}
puts("No") ;
CONT:;
}
#ifdef READ
fclose(stdin) ; fclose(stdout) ;
#else
getchar() ; getchar() ;
#endif
return 0 ;
}*/