hdu1536
来源:互联网 发布:网络与新媒体工资待遇 编辑:程序博客网 时间:2024/05/21 10:54
这是一道典型的SIM型博弈,不过是一道非常简单的博弈题目,这是因为这样的题目是有模板的,但是这一道题并没有考算法优化,直接靠模板暴力是可以解决问题的,如果直接暴力超时的话,这道题就必须优化算法或者是重新考虑新的算法,但是既然这里可以AC就不再拓展。
int mex1(int p) { int i,t; bool g[101]={0}; for(i=0;i<N;i++) //N是fibo数组的个数(这样说的话还会需要判断一下的)。 { //别的有点类似的都是可以这样的。 t=p-a[i];// fibo[i]是题中定义的特殊取法规则的数组(上面题里的 1, 2 ,3 ,5 ,8 ,13 ,21 ) if(t<0) break; if (sg[t]==-1) //f[] 表示 存放SG 函数值的数组 sg[t]=mex1(t); g[sg[t]]=1; } for(i=0;;i++) { if (!g[i]) return i; }}
上面的是这种类型题目的模板sg数组保存的就是各个取值的sg值a[i]就是按照题目中所说的取法比如只能够取1,32,4,8,,,2的幂次,f[]里面就是保存的后续sg函数的值的大小。那么有个这个模板我们就可以直接做了。
#include<iostream>using namespace std;#include<cstdlib>const int Max=10005;int sg[Max];int a[105];int N;int mex1(int p) { int i,t; bool g[101]={0}; for(i=0;i<N;i++) //k是fibo数组的个数(这样说的话还会需要判断一下的)。 { //别的有点类似的都是可以这样的。 t=p-a[i];// fibo[i]是题中定义的特殊取法规则的数组(上面题里的 1, 2 ,3 ,5 ,8 ,13 ,21 ) if(t<0) break; if (sg[t]==-1) //f[] 表示 存放SG 函数值的数组 sg[t]=mex1(t); g[sg[t]]=1; } for(i=0;;i++) { if (!g[i]) return i; }}int cmp(const void *a,const void *b){ return *(int*)a-*(int*)b;}int main(){ int M,T; int b[100]; int i,j; int sum; int t; while(cin>>N,N) { t=0; memset(a,0,sizeof(a)); for(i=0;i<N;i++) { scanf("%d",&a[i]); } qsort(a,N,sizeof(a[0]),cmp); scanf("%d",&M); memset(sg,-1,sizeof(sg)); while(M--) { sum=0; cin>>T; memset(b,0,sizeof(b)); for(j=0;j<T;j++) scanf("%d",&b[j]); for(j=0;j<T;j++) { sum^=mex1(b[j]); } if(sum==0) cout<<"L"; 。。。。。。。。。1 else cout<<"W"; } cout<<endl; } return 0;}
注意:本代码经过编译运行之后如下,有些同学看着和题目不一样,就用数组将各个结果保存在输出,实际上是没有必要的因为黑箱子操作的时候他的数据输入之后结果已经保存了,在他那里运行之后就是LWW。所以1的地方是可以直接做的。2 2 5
3
2 5 12
L3 2 4 7
W4 2 3 7 12
W
0 0
- hdu1536
- hdu1536
- hdu1536
- HDU1536-nim
- hdu1536 1848
- hdu1536 S-Nim(博弈)
- hdu1536 hdu1944 S-Nim
- hdu1536 博弈模板
- hdu1536 S-Nim
- hdu1536(求sg)
- 【模版】hdu1536 S-Nim
- hdu1536-SG值
- HDU1536-nim博弈入门
- HDU1536->SG函数
- HDU1536 SG函数
- hdu1536博弈sg
- HDU1536-S-Nim--Graph Game
- 【HDU1536】S-Nim(博弈)
- mongodb group分组(最详细、最通俗、最易理解的讲解)
- Flex 与 Java 数据交互一种方式(Blazeds)
- HashMap
- const 关键字详解
- 5-15abs,cordova
- hdu1536
- Yii引入PHPExcel修改其自动加载方法
- lingo 简单整数组合问题
- ContentProvider-UriMatch匹配实现CURD(4)
- 士兵排队
- BlueTooth: 低功耗蓝牙在便携式医疗设备中的应用展望
- 随记
- Android TextView setPadding 函数
- 条形图