HDU1536 S-Nim(博弈入门暴力打SG表)
来源:互联网 发布:手机淘宝宝贝怎么分类 编辑:程序博客网 时间:2024/05/18 19:18
还是跟之前的博弈题一样 暴力打SG表
之前每次循环都memset(book,0,sizeof(book)) 这里的数据比较大。所以用一个技巧,只要在开始memset一次。然后之后设book[...]=i+1 然后判断 if(book[k]!=i+1)是否成立就好了。
187ms 好险。
AC代码如下:
#include<iostream>#include<cstring>#include<cstdio>#include<algorithm>#define maxn 10005int T,s,n,book[maxn],a[maxn],f[105],sg[maxn],matc[maxn],m;using namespace std;int main(){ sg[0]=0;//预处理 没得取的话为0 必输态 while(scanf("%d",&s)==1&&s) { for(int i=0;i<s;i++)scanf("%d",&f[i]); f[s]=999999999; s++; sort(f,f+s); cin>>T; m=0; memset(sg,0,sizeof(sg)); memset(book,0,sizeof(book)); for(int i=0;i<maxn;i++) { int tmax=0; for(int j=0;f[j]<=i;j++) { book[sg[i-f[j]]]=i+1; tmax=max(tmax,sg[i-f[j]]); } for(int k=0;k<=tmax+1;k++) { if(book[k]!=i+1) { sg[i]=k; break; } } } while(T--) { cin>>n; for(int i=0;i<n;i++)scanf("%d",&a[i]); sort(a,a+n); //for(int i=0;i<=a[n-1];i++)cout<<sg[i]<<" "; //cout<<endl; int res=0; for(int i=0;i<n;i++)res^=sg[a[i]]; if(res)matc[m++]=1; else matc[m++]=0; } for(int i=0;i<m;i++) { if(matc[i])printf("W"); else printf("L"); } cout<<endl; }}
1 0
- HDU1536 S-Nim(博弈入门暴力打SG表)
- hdu1536 S-Nim (利用sg函数模板打表)
- 【HDU1536】S-Nim (博弈,SG函数)
- hdu1536 & 1944 S-NIM 博弈 SG函数
- hdu1536 - S-Nim (博弈 SG函数)
- 【HDU1536】S-Nim(博弈)
- hdu1536 S-Nim(博弈)
- S-Nim(hdu1536+SG函数)
- HDU1536-nim博弈入门
- [ACM] hdu 1536 S-Nim(Nim组合博弈 SG函数打表)
- 【HDU3032】【Lasker's Nim(一种Nim游戏)】Nim or not Nim? Multi-SG博弈、打表
- 【HDU1536 S-Nim】固定取法下的nim博弈-SG函数
- HDU1536&&HDU1944 S-Nim SG函数
- HDU 2311-Nim or not Nim?(Nim博弈-打sg表找规律)
- poj-2960 S-Nim (博弈SG)
- 博弈--ZOJ 3084 S-Nim(SG)
- HDU 1536(sg博弈) S-Nim
- [POJ2960]S-Nim(博弈SG函数)
- NSUserDeafults的关于"第一次登陆"的测试问题
- 二叉树的遍历(非递归和递归实现)
- BeeFramework环境搭建
- 设置tabBar背景颜色
- 跳板机&攻击方式
- HDU1536 S-Nim(博弈入门暴力打SG表)
- Android下的图片压缩及图片和视频的上传
- Android EventBus源码解析
- 使用vs2010创建一个简单c程序过程
- spring mvc 检查添加的某个字段是否在数据库里已经存在
- 几个最短路径算法Floyd、Dijkstra、Bellman-Ford、SPFA的比较
- 用Maven构建Mahout项目
- doc简单命令备注
- 关于android studio中标题栏的隐藏和显现实现。