hdu 1536 S-Nim (sg)
2012-05-04 20:10
344 查看
http://acm.hdu.edu.cn/showproblem.php?pid=1536
计算sg值。
注意两个地方:
1. s是无序的。
2. 不能对n=10000打表,因为能取的个数是给定的,会有打不到的点。
code:
#include<cstdio>
#include<cstring>
int s[101], sg[10001], k ;
int mex(int n){
if(sg
!=-1) return sg
;
bool vis[101] ;//n最多有100个后继
int i ;
memset(vis, false, sizeof(vis)) ;
for(i=0; i<k; i++){
if(s[i]>n) continue ;//不能break, s无序
sg[n-s[i]] = mex(n-s[i]) ;
vis[sg[n-s[i]]] = true ;
}
for(i=0; vis[i]; i++) ;
sg
= i ;
return sg
;
}
int main(){
int m, l, i, j, t, sum ;
while(~scanf("%d", &k)&&k){
for(i=0; i<k; i++)
scanf("%d", &s[i]) ;
memset(sg, -1, sizeof(sg)) ;
sg[0] = 0 ;
//mex(10000) ;//不能打表,存在打不到的点
scanf("%d", &m) ;
while(m--){
scanf("%d", &l) ;
sum = 0 ;
while(l--){
scanf("%d", &t) ;
sum ^= mex(t) ;
}
if(sum) printf("W") ;
else printf("L") ;
}
printf("\n") ;
}
return 0 ;}
计算sg值。
注意两个地方:
1. s是无序的。
2. 不能对n=10000打表,因为能取的个数是给定的,会有打不到的点。
code:
#include<cstdio>
#include<cstring>
int s[101], sg[10001], k ;
int mex(int n){
if(sg
!=-1) return sg
;
bool vis[101] ;//n最多有100个后继
int i ;
memset(vis, false, sizeof(vis)) ;
for(i=0; i<k; i++){
if(s[i]>n) continue ;//不能break, s无序
sg[n-s[i]] = mex(n-s[i]) ;
vis[sg[n-s[i]]] = true ;
}
for(i=0; vis[i]; i++) ;
sg
= i ;
return sg
;
}
int main(){
int m, l, i, j, t, sum ;
while(~scanf("%d", &k)&&k){
for(i=0; i<k; i++)
scanf("%d", &s[i]) ;
memset(sg, -1, sizeof(sg)) ;
sg[0] = 0 ;
//mex(10000) ;//不能打表,存在打不到的点
scanf("%d", &m) ;
while(m--){
scanf("%d", &l) ;
sum = 0 ;
while(l--){
scanf("%d", &t) ;
sum ^= mex(t) ;
}
if(sum) printf("W") ;
else printf("L") ;
}
printf("\n") ;
}
return 0 ;}
相关文章推荐
- hdu 1536 S-Nim_求sg值模版
- hdu 1536 S-Nim_求sg值模版
- hdu 1536 | hdu 1944 - S-Nim(博弈-SG)
- HDU 1536(sg博弈) S-Nim
- HDU 1536 - S-Nim(SG)
- HDU1536 S-Nim(博弈入门暴力打SG表)
- [hdu 1536 S-Nim] SG 函数
- HDU 1536 S-Nim(SG经典博弈)
- hdu 1536 S-Nim(SG函数)
- HDU 1536 S-Nim 博弈,SG函数
- HDU_1536 S-Nim(sg函数)
- HDU 2311-Nim or not Nim?(Nim博弈-打sg表找规律)
- hdu 1536 &&hdu1944 S-Nim (sg函数打表)
- [ACM] hdu 1536 S-Nim(Nim组合博弈 SG函数打表)
- HDU 1536 S-Nim SG函数 Nim
- HDU - 1536 S-Nim
- [ACM] hdu 1536 S-Nim(Nim组合博弈 SG函数打表)
- hdu 5795 A Simple Nim(SG打表找规律)
- hdu 1536 S-Nim
- hdu 1536 S-Nim(SG函数)