当前位置: 首页 > news >正文

poj2311

  博弈论——sg,mex

sg性质:1.在末态的状态点为N态。

     2.P态的下一步有一个是N态

     3.N态的下一步全部是P态。

当然这是对于单点一个游戏的情形,也相当于NIM只有一堆石子。

 

mex(minimal excludant),很俗地可以解释为:mex{S}表示S集合中从0开始,最小未出现的数字。

 

关于sg与mex的关系,可以引用这里http://www.cnblogs.com/Knuth/archive/2009/09/05/1561007.html的一段话:

对于一个给定的有向无环图,定义关于图的每个顶点的Sprague-Garundy函数g如下:g(x)=mex{ g(y) | y是x的后继 }。

来看一下SG函数的性质。首先,所有的terminal position所对应的顶点,也就是没有出边的顶点,其SG值为0,因为它的后继集合是空集。然后对于一个g(x)=0的顶点x,它的所有后继y都满足g(y)!=0。对于一个g(x)!=0的顶点,必定存在一个后继y满足g(y)=0。

以上这三句话表明,顶点x所代表的postion是P-position当且仅当g(x)=0(跟P-positioin/N-position的定义的那三句话是完全对应的)。

 

关于sg叠加的效果,很神奇发现它们满足sg(G) = sg(G1)^sg(G2)^……^sg(Gn)。对于与博弈有关的核心就是这些了。多刷刷题,自然心里就明了了。

 1 #include <iostream>
 2 #include <cstring>
 3 #include <cstdio>
 4 using namespace std;
 5 int sg[210][210];
 6 int stamp[210*210]={0},stamps=1;
 7 int sgx(int r,int c){
 8     stamps++;
 9     for(int i=2;i<=r-i;i++)  // 1 c(只有一行)【r-1 c】 不能被继续,故需要从2开始。
10         stamp[sg[i][c]^sg[r-i][c]] = stamps;
11     for(int i=2;i<=c-i;i++)
12         stamp[sg[r][i]^sg[r][c-i]] = stamps;
13     for(int i=0;;i++)
14     if(stamp[i] < stamps)
15     {
16         sg[r][c] = i;
17         break;
18     }
19     return sg[r][c];
20 }
21 int main()
22 {
23     for(int i=1;i<210;i++)
24         sg[1][i] = sg[i][1] = 1;
25 
26     for(int i=2;i<210;i++)
27       for(int j=i;j<210;j++)
28         sg[i][j] = sg[j][i] = sgx(i,j);
29     int n,m;
30     while(scanf("%d%d",&n,&m) != EOF){
31         if(sg[n][m]) printf("WIN\n");
32         else printf("LOSE\n");
33     }
34     return 0;
35 }

 

转载于:https://www.cnblogs.com/karlvin/p/3203204.html

相关文章:

  • 一张图读懂数据库备份
  • WPF/ArcGIS Engine三维开发和EVC3/4升级到VS项目建议(转)
  • mysql一直使用swap,导致swap空间用尽变卡
  • 非阻塞同步机制与CAS操作
  • 今天作为一个Android开发者,你迷茫了吗?
  • html select 和dropdownlist小结收集
  • Promise的使用及简单实现
  • Redis详解篇
  • 求int最大值以及int二进制
  • idea+tomcat 解决 debug超级慢 问题
  • ubuntu 安装时分辨率太小 导致无法继续安装
  • EntityFramework Core笔记:查询数据(3)
  • Entity Framework In Action--5 Domain model mapping(2)
  • 在IDEA中编译Maven项目
  • Python绘制数码管显示当前时间
  • Android开发 - 掌握ConstraintLayout(四)创建基本约束
  • angular学习第一篇-----环境搭建
  • Computed property XXX was assigned to but it has no setter
  • ES6 ...操作符
  • gf框架之分页模块(五) - 自定义分页
  • iOS 颜色设置看我就够了
  • js递归,无限分级树形折叠菜单
  • JS函数式编程 数组部分风格 ES6版
  • Kibana配置logstash,报表一体化
  • Laravel Telescope:优雅的应用调试工具
  • Python socket服务器端、客户端传送信息
  • TypeScript迭代器
  • 如何学习JavaEE,项目又该如何做?
  • 线性表及其算法(java实现)
  • 项目管理碎碎念系列之一:干系人管理
  • 移动端 h5开发相关内容总结(三)
  • 移动互联网+智能运营体系搭建=你家有金矿啊!
  • 《TCP IP 详解卷1:协议》阅读笔记 - 第六章
  • AI又要和人类“对打”,Deepmind宣布《星战Ⅱ》即将开始 ...
  • SAP CRM里Lead通过工作流自动创建Opportunity的原理讲解 ...
  • 格斗健身潮牌24KiCK获近千万Pre-A轮融资,用户留存高达9个月 ...
  • #### go map 底层结构 ####
  • #1015 : KMP算法
  • #pragma multi_compile #pragma shader_feature
  • (Bean工厂的后处理器入门)学习Spring的第七天
  • (C语言)输入一个序列,判断是否为奇偶交叉数
  • (html5)在移动端input输入搜索项后 输入法下面为什么不想百度那样出现前往? 而我的出现的是换行...
  • (MIT博士)林达华老师-概率模型与计算机视觉”
  • (pojstep1.1.1)poj 1298(直叙式模拟)
  • (ZT)出版业改革:该死的死,该生的生
  • (八)Flask之app.route装饰器函数的参数
  • (六)vue-router+UI组件库
  • (幽默漫画)有个程序员老公,是怎样的体验?
  • (原创) cocos2dx使用Curl连接网络(客户端)
  • (转)EOS中账户、钱包和密钥的关系
  • (转)ObjectiveC 深浅拷贝学习
  • .dat文件写入byte类型数组_用Python从Abaqus导出txt、dat数据
  • .form文件_SSM框架文件上传篇
  • .halo勒索病毒解密方法|勒索病毒解决|勒索病毒恢复|数据库修复
  • .htaccess配置重写url引擎