【题目链接】 http://poj.org/problem?id=2068

【题目大意】

  给出两队人,交叉放置围成一圈,每个人能取的石子数有个上限,各不相同
  轮流取石头,取到最后一块石头的队伍算输,问哪个队伍能赢

【题解】

  用dp[i][j]记录第i个人取石头时候还有j个石头的状态,
  显然j==0时候为必胜态,我们对每个状态搜索后继状态,如果能导向必败态则为必胜态,
  否则必败,记忆化搜索即可。

【代码】

#include <cstdio>
#include <cstring>
using namespace std;
int sg[20][8193],n,s,a[20];
int SG(int id,int r){
if(sg[id][r]!=-1)return sg[id][r];
if(r==0)return sg[id][r]=1;
sg[id][r]=0;
for(int i=1;i<=a[id]&&i<=r;i++){
if(!SG((id+1)%(2*n),r-i))sg[id][r]=1;
}return sg[id][r];
}
int main(){
while(~scanf("%d",&n),n){
scanf("%d",&s);
for(int i=0;i<2*n;i++)scanf("%d",&a[i]);
memset(sg,-1,sizeof(sg));
printf("%d\n",SG(0,s));
}return 0;
} 

POJ 2068 Nim(博弈论)的更多相关文章

  1. poj 2068 Nim 博弈论

    思路:dp[i][j]:第i个人时还剩j个石头. 当j为0时,有必胜为1: 后继中有必败态的为必胜态!!记忆化搜索下就可以了! 代码如下: #include<iostream> #incl ...

  2. poj 2068 Nim

    Nim POJ - 2068 题目大意:多组数据,两人轮流操作,n轮一循环,给出总石子数和这n轮每次两人能取的石子上限(下限为1).取到最后一颗者输. /* f[i][j]表示在第i轮中一共有j个石子 ...

  3. POJ 2068 Nim#双人dp博弈

    http://poj.org/problem?id=2068 #include<iostream> #include<cstdio> #include<cstring&g ...

  4. poj 2068 Nim(博弈树)

    Nim Time Limit: 1000MS   Memory Limit: 30000K Total Submissions: 1501   Accepted: 845 Description Le ...

  5. poj 2068 Nim(博弈dp)

    Nim Time Limit: 1000MS   Memory Limit: 30000K Total Submissions: 1403   Accepted: 791 Description Le ...

  6. poj 2975 Nim 博弈论

    令ans=a1^a2^...^an,如果需要构造出异或值为0的数, 而且由于只能操作一堆石子,所以对于某堆石子ai,现在对于ans^ai,就是除了ai以外其他的石子 的异或值,如果ans^ai< ...

  7. POJ 2068 NIm (dp博弈,每个人都有特定的取最大值)

    题目大意: 有2n个人,从0开始编号,按编号奇偶分为两队,循环轮流取一堆有m个石子的石堆,偶数队先手,每个人至少取1个,至多取w[i]个,取走最后一个石子的队伍输.问偶数队是否能赢. 分析: 题目数据 ...

  8. (转载)Nim博弈论

    最近补上次参加2019西安邀请赛的题,其中的E题出现了Nim博弈论,今天打算好好看看Nim博弈论,在网上看到这篇总结得超级好的博客,就转载了过来. 转载:https://www.cnblogs.com ...

  9. POJ 2975 Nim(博弈论)

    [题目链接] http://poj.org/problem?id=2975 [题目大意] 问在传统的nim游戏中先手必胜策略的数量 [题解] 设sg=a1^a1^a3^a4^………^an,当sg为0时 ...

随机推荐

  1. innodb_stats_on_metadata and slow queries on INFORMATION_SCHEMA

    INFORMATION_SCHEMA is usually the place to go when you want to get facts about a system (how many ta ...

  2. sls语法:创建file,创建文件夹

    http://blog.kukafei520.net/html/2014/942.html /tmp/aaa.txt: file.managed /tmp/salt_test: file.direct ...

  3. 移动端浏览器touch事件的研究总结

    $("body").on("touchstart", function(e) {     e.preventDefault();     startX = e. ...

  4. Qt5 界面中文乱码问题

    1.文件所在项目文件  xxx.pro 中添加: QMAKE_CXXFLAGS += -execution-charset:utf- 2.文件以 UTF-8 编码保存 3.添加  utf-8 BOM

  5. Ubuntu1604 install netease-cloud music

    Two issue: 1. There is no voice on my computer, and the system was mute and cannot unmute. eric@E641 ...

  6. HTML5之SVG详解(一):基本概括

    转载自:http://www.cnblogs.com/hupeng/archive/2012/12/21/2828456.html 1.背景 SVG是Scalable Vector Graphics的 ...

  7. php设定错误和异常处理可使用的函数

    1.register_shutdown_function 使用场景:当我们的脚本执行完成或意外死掉导致PHP执行即将关闭时,这个函数会被调用. 函数介绍: void register_shutdown ...

  8. Spring发展史

    https://www.cnblogs.com/RunForLove/p/4641672.html

  9. 【HDU5772】String Problem [网络流]

    String Problem Time Limit: 10 Sec  Memory Limit: 64 MB[Submit][Status][Discuss] Description Input Ou ...

  10. 【CF1023F】Mobile Phone Network(dsu,MST)

    题意: 保证原边以边权单调非减的顺序读入 思路:先把未知边加入,再加入原始边做MST,考虑从大到小,用数据结构维护,每一条原始边相当两个链赋值操作,每一条未知边相当于一个询问,答案即为询问之和 LCT ...