hdu 1536 - SG函数模板
2017-12-23 13:26
281 查看
题目链接:点击打开链接
题解思路:SG模板自行百度
#include<bits/stdc++.h>
using namespace std;
const int mx = 1e4+10;
int n,m;
int st[mx],sg[mx];
void get_sg()
{
bool vis[mx];
memset(sg,0,sizeof(sg));
for(int i=1;i<mx;i++){
memset(vis,0,sizeof(vis));
for(int j=0;st[j]<=i&&j<n;j++)
vis[sg[i-st[j]]] = 1;//标记后继SG函数
for(int j=0;j<mx;j++)//找mex
if(!vis[j]){
sg[i] = j;
break;
}
}
}
int main()
{
while(scanf("%d",&n)&&n){
for(int i=0;i<n;i++){
scanf("%d",st+i);
}
sort(st,st+n);
get_sg();
for(int i=1;i<=10;i++) cout << sg[i] << endl;
scanf("%d",&m);
int a,b;
while(m--){
int sum = 0;
scanf("%d",&a);
while(a--){
scanf("%d",&b);
sum ^= sg[b];
}
putchar(sum?'W':'L');
}
puts("");
}
return 0;
}
题解思路:SG模板自行百度
#include<bits/stdc++.h>
using namespace std;
const int mx = 1e4+10;
int n,m;
int st[mx],sg[mx];
void get_sg()
{
bool vis[mx];
memset(sg,0,sizeof(sg));
for(int i=1;i<mx;i++){
memset(vis,0,sizeof(vis));
for(int j=0;st[j]<=i&&j<n;j++)
vis[sg[i-st[j]]] = 1;//标记后继SG函数
for(int j=0;j<mx;j++)//找mex
if(!vis[j]){
sg[i] = j;
break;
}
}
}
int main()
{
while(scanf("%d",&n)&&n){
for(int i=0;i<n;i++){
scanf("%d",st+i);
}
sort(st,st+n);
get_sg();
for(int i=1;i<=10;i++) cout << sg[i] << endl;
scanf("%d",&m);
int a,b;
while(m--){
int sum = 0;
scanf("%d",&a);
while(a--){
scanf("%d",&b);
sum ^= sg[b];
}
putchar(sum?'W':'L');
}
puts("");
}
return 0;
}
相关文章推荐
- hdu 1536 SG函数模板题
- hdu 1536 SG函数模板题 千万注意游戏的组合用SG函数值异或 是SG函数的值啊
- HDU 1536 && HDU 1944 S-Nim (Nim博弈、SG函数模板)
- HDU 1536 SG函数模板
- hdu1536 & 1944 S-NIM 博弈 SG函数
- [ACM] hdu 1536 S-Nim(Nim组合博弈 SG函数打表)
- hdu 1536 S-Nim(SG函数)
- HDU 1536 S-Nim 博弈,SG函数
- hdu 1536 S-Nim (sg函数模版)
- [ACM] hdu 1536 S-Nim(Nim组合博弈 SG函数打表)
- hdu 1536 S-Nim(SG函数)
- HDU 1536 SG函数
- hdu 1536 &&hdu1944 S-Nim (sg函数打表)
- HDU 1536 SG函数应用
- hdu 1536 S-Nim(SG函数)
- hdu1536 博弈模板
- hdu 1536 SG函数的应用
- HDU_1536 S-Nim(sg函数)
- hdu 1536 S-Nim(SG函数)
- HDU 1536 sg函数