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[n]!=-1)   return sg[n] ;
    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[n] = i ;
    return sg[n] ;
}
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 ;} 

转载于:https://www.cnblogs.com/xiaolongchase/archive/2012/05/04/2483243.html

hdu 1536 S-Nim (sg)相关推荐

  1. S-Nim (HDU 1536)组合博弈SG多组游戏

    S-Nim 题目链接 Problem Description Arthur and his sister Caroll have been playing a game called Nim for ...

  2. HDU 1536 求解SG函数

    1 #include<stdio.h> 2 #include<string.h> 3 #include<algorithm> 4 #include<set&g ...

  3. HDU - 1536 S-Nim(sg函数)

    题目链接:点击查看 题目大意:根据尼姆博弈的规则,现在更改为每次只能从任意一堆中取走规定集合中的数目,问每次游戏先手必胜还是必败 题目分析:sg打表模板题,这里挂一个大牛的博客,讲得是尼姆博弈和sg函 ...

  4. hdu 1907 & hdu 2509(Nim博弈)

    其实我都是一直叫它(尼美博弈) 模型: 给你N堆,每堆数目是确定的(输入),每次从一堆取一个,多者不限,最多取完一堆.有两人AB,A先手,规定最后一个取完者赢(输).问先后手哪个赢(输).(假定两个人 ...

  5. hdu 1536(博弈)

    传送门:S-Nim 题意:给n个数的集合s, 再给m 组数据,每组表示 k 堆石子,每次可以取的个数只能是集合s中的数量.问先手胜还是输? 分析:sg函数的经典运用,先预处理出所有数量为0~10000 ...

  6. HDU 2516 (Fabonacci Nim) 取石子游戏

    这道题的结论就是,石子的个数为斐波那契数列某一项的时候,先手必败:否则,先手必胜. 结论很简单,但是证明却不是特别容易.找了好几篇博客,发现不一样的也就两篇,但是这两篇给的证明感觉证得不清不楚的,没看 ...

  7. 博弈论题目总结(二)——SG组合游戏及变形

    SG函数 为了更一般化博弈问题,我们引入SG函数 SG函数有如下性质: 1.如果某个状态SG函数值为0,则它后继的每个状态SG函数值都不为0 2.如果某个状态SG函数值不为0,则它至少存在一个后继的状 ...

  8. ACM——博弈论 (以SG的求法为主)

    HDU 1847Good Luck in CET-4 Everybody! n个石子取2的次幂个,0为terminal position P/N分析和求SG值方法都可以,找规律的话模3余0也能过 主要 ...

  9. 【博弈论】博弈论题单题解

    会不断更新的(咕咕咕) 题目难度大致满足非降性 博弈论真是深坑啊,填不动了,还有Nim积.Every-SG游戏等等等等很多题型还不会,先去学别的了 涉及知识: SG函数及SG定理:传送门 博弈论知识总 ...

  10. 博弈论探讨及题目总结

    转载自爱神博客:http://blog.csdn.net/acm_cxlove/article/details/7854526 首先当然要献上一些非常好的学习资料: 基础博弈的小结:http://bl ...

最新文章

  1. LeetCode: 150:逆波兰表示法求值。
  2. 使用OpenSSL实现证书操作
  3. uaredirect.js
  4. showModalDialog弹窗
  5. 文献记录(part84)--A nearest neighbor-based active learning method and its application to time ...
  6. IntegerCache的妙用和陷阱
  7. java写的一个zip压缩源码错误分析
  8. 判断是否是日期格式_Java8新特性之新世间与日期
  9. Hibernate-04-实体编写规范
  10. The servlet name already exists.解决方法
  11. 杭电多校HDU 6656 Kejin Player(概率DP)题解
  12. C++ 指针二维数组, C++二维指针数组笔记
  13. 高质量Python书籍推荐丨Python学习手册(第5版)
  14. 《学生信息管理系统》论文
  15. 搭建邮件系统与使用第三方邮件发送平台优劣详解
  16. 生日祝福html_祝我家的猪,生日快乐 | 告白墙第21期
  17. Log4j2 日志 依赖 jar包 缺失 导致启动报错 解决方法
  18. 什么是大数据? 大数据项目的流程
  19. 泰康人寿java开发待遇怎么样_宋晓伟-泰康人寿-5年Java开发高级工程师-猿急送
  20. 腾讯云服务器备案完整流程 40天备案的血与泪

热门文章

  1. 哨兵1号(Sentinel-1)与陆地探测1号(L-SAR)对比
  2. PHP全文索引 讯搜xunsearch
  3. ImageLoader的简单分析(二)
  4. css 布局什么时候用百分比_用手机拍视频学会这个布局方法,拍什么都好看
  5. 一大早,分享一个好消息
  6. 蓝字冲销是什么意思_会计做帐中用红字和蓝字代表的意思是什么
  7. php把buffer转化为图片_干货:如何提升转化率?5个优化转化率的tips
  8. gpio能测Linux启动时间,linux – 如何自动测量新建图像的启动时间...
  9. getvalue参数计数不匹配_数据人:不懂业务,分析就仅仅只是提数
  10. linux线程组和进程区别,Linux中进程和线程之间的区别