http://acm.hdu.edu.cn/showproblem.php?pid=1524

博弈  用SG处理

#include<iostream>
#include<cstdio>
#include<cstring>
#include<string>
#include<vector>
#include<queue>
#include<map>
#include<stack>
#include<algorithm>
#include<cmath>using namespace std;
//#pragma comment(linker,"/STACK:1000000000,1000000000")#define LL long longconst int N=1005;
const int M=100005;
int Nim[N];
int head[N];
int I,next[M],k[M];
void Add(int i,int j)
{k[I]=j;next[I]=head[i];head[i]=I++;
}
int dp(int x)//求x对应到Nim里的值
{if(Nim[x]!=-1)return Nim[x];bool had[N];memset(had,false,sizeof(had));for(int t=head[x];t!=-1;t=next[t]){had[ dp( k[t] ) ]=true;}for(int i=0;i<N;++i){if(!had[i])//第一个到不了的值{Nim[x]=i;break;}}return Nim[x];
}
int main()
{//freopen("data.txt","r",stdin);int n;while(scanf("%d",&n)!=EOF){memset(head,-1,sizeof(head));I=0;int m;for(int i=0;i<n;++i){scanf("%d",&m);while(m--){int j;scanf("%d",&j);Add(i,j);}}memset(Nim,-1,sizeof(Nim));while(scanf("%d",&m),m){int flag=0;while(m--){int tmp;scanf("%d",&tmp);flag=(flag^dp(tmp));//S-Nim 异或}if(flag)printf("WIN\n");elseprintf("LOSE\n");}}return 0;
}

转载于:https://www.cnblogs.com/liulangye/archive/2012/10/17/2727161.html

hdu 1524 A Chess Game相关推荐

  1. hdu 1524 A Chess Game 博弈

    题目链接 给出一个有向无环图, 上面放有一些棋子, 两个人轮流移动棋子, 当一个人无法移动时, 算输. 求出每一个点的sg值, 异或就可以.出度为0的点sg值为0. 1 #include<bit ...

  2. hdu 1680 Cheesy Chess

    hdu   1680   Cheesy Chess           题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=1680 题目大意:(好长的题啊- ...

  3. HDU 4405 Aeroplane chess(期望DP)

    题目链接 理解了过程就是个水题,收拾东西回家. 1 #include <cstdio> 2 #include <iostream> 3 #include <cstring ...

  4. HDU - 3026 Chinese Chess(二分图的必经边)

    题目链接:点击查看 题目大意:给出一个n*m的棋盘,现在开始放 '车' 棋子,规定只有k个位置可以摆放棋子,现在要求摆放的棋子尽可能多且不能互相攻击,到此为止是一个经典的二分图最大匹配问题,接下来是要 ...

  5. 杭电OJ分类题目(3)

    原题出处:HDOJ Problem Index by Type,http://acm.hdu.edu.cn/typeclass.php 杭电OJ分类题目(3) HDU Computational Ge ...

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

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

  7. 【原创】概率DP总结 by kuangbin

    概率DP主要用于求解期望.概率等题目. 转移方程有时候比较灵活. 一般求概率是正推,求期望是逆推.通过题目可以体会到这点. 首先先推荐几篇参考的论文: <信息学竞赛中概率问题求解初探> & ...

  8. 动态规划总结与题目分类

    源博客链接:http://blog.csdn.net/cc_again/article/details/25866971 动态规划一直是ACM竞赛中的重点,同时又是难点,因为该算法时间效率高,代码量少 ...

  9. 『ACM-算法-动态规划』初识DP动态规划算法

    一.多阶段决策过程的最优化问题 在现实生活中,有类活 动的过程,由于 它的特殊性,可将过程分成若干个互相阶段.在它的每一阶段都需要作出决策,从而使整个过程达到最好的活动效果.当阶段决策的选取不是任意确 ...

最新文章

  1. printf(%d, -10u); 这个输出什么呀, 0或1?
  2. MyBatis+Spring整合
  3. Mac写文件到U盘的方法
  4. 正则表达式加golang爬虫爬取经典案例豆瓣top250
  5. Strongly connected HDU - 4635(tarjan+强连通分量)
  6. leetcode 第 216 场周赛 整理
  7. postmapping注解参数说明_从零搭建后端框架:优雅的参数校验Validator
  8. 进腾讯实习要交钱?腾讯2021年开除70名员工,拉黑13家公司
  9. CA与数字证书的自结
  10. go 并发的非阻塞缓存
  11. 计算机算法设计与分析教学大纲,《算法设计与分析》教学大纲
  12. 最详细的Java入门完整教程,学Java先收藏了!
  13. 【SequoiaDB|巨杉数据库】巨杉数据库快速入门之快速使用2
  14. matlab实现双线性插值,使用双线性插值法放大图像(matlab实现)
  15. 如何高效开展测试用例评审?附用例评审检查清单及用例评审报告模板
  16. vue和 element ui下载到本地后引入
  17. 派克宇航获得AVIC涡轮螺旋桨支线飞机MA700的飞控作动系统合同
  18. Git使用流程及技巧 - 详细教程
  19. 关于uni-app中uni-forms表单验证时“多级结构对象数据”如何做数据校验的解决方案
  20. Android 应用开发入门

热门文章

  1. Ceph使用块设备完整操作流程
  2. 封装算法: 模板方法(Template Method)模式
  3. PHP面向对象(OOP)----分页类 1
  4. windows 服务实现定时任务调度(Quartz.Net)
  5. 江湖救急!磁盘数据大救星TestDisk
  6. jquery 如何获取动态添加的元素
  7. ylbtech-LanguageSamples-Struct(结构)
  8. 在MVC3中使用code first生成数据局库并操作数据库
  9. bash编程(一)之运算及比较
  10. c语言求一个数的阶乘值代码,求10000的阶乘(c语言代码实现)