51nod三大经典博弈(模板)

真是令人惊讶,三大经典博弈都可以通过数学运算得到结论简单解决!

Bash游戏(数学余数方法)

关键:必输局面,谁面对(k+1)个石子这个局面必输!

 1 #include <iostream>
 2 using namespace std;
 3
 4 int main()
 5 {
 6     int T;
 7     cin>>T;
 8     while(T--)
 9     {
10         int n,k;
11         cin>>n>>k;
12
13         if(n%(k+1)) cout<<‘A‘<<endl;
14         else cout<<‘B‘<<endl;
15     }
16
17     return 0;
18 }

这个游戏刚开始我是找不到规律的,是通过k==2时推算出来的(数小游戏简单而且比较好找规律嘛,发现只要是3的倍数(谁面对3的倍数局面)先手必输)。

这里只不过把k=2扩展到了n维,套路还是一样。

 1 #include <iostream>
 2 using namespace std;
 3
 4 int main()
 5 {
 6     int T;
 7     cin>>T;
 8     while(T--)
 9     {
10         int n;
11         cin>>n;
12
13         if(n%3) cout<<‘A‘<<endl;
14         else cout<<‘B‘<<endl;
15     }
16
17     return 0;
18 }

Nim游戏(数学异或方法)

关键:必输局面,谁面对2堆石子相同这个局面必输!

 1 #include <iostream>
 2 using namespace std;
 3
 4 int main()
 5 {
 6     int n;
 7     cin>>n;
 8     int ans=0;//0异或任何数都是那个数
 9     for(int i=1;i<=n;i++)
10     {
11         int x;
12         cin>>x;
13
14         ans=ans^x;
15     }
16
17     if(ans) cout<<‘A‘<<endl;
18     else cout<<‘B‘<<endl;
19
20     return 0;
21 }

Bash游戏(数学黄金比例,黄金分割方法)

关键:必输局面,谁面对(k+1)个石子这个局面必输!

完。

原文地址:https://www.cnblogs.com/redblackk/p/9968908.html

时间: 2024-10-10 09:38:28

51nod三大经典博弈(模板)的相关文章

编译原理三大经典书籍

1.龙书(Dragon book)英文名:Compilers: Principles,Techniques,and Tools作者:Alfred V.Aho,Ravi Sethi,Jeffrey D.Ullman中文名:编译原理技术和工具 2.虎书(Tiger book)英文名:Modern Compiler Implementation in C作者:Andrew W.Appel,with Jens Palsberg中文名:现代编译原理-C语言描述 3.鲸书(Whale book)英文名:Ad

HDU 2897 邂逅明下 (经典博弈变形)

邂逅明下 Problem Description 当日遇到月,于是有了明.当我遇到了你,便成了侣. 那天,日月相会,我见到了你.而且,大地失去了光辉,你我是否成侣?这注定是个凄美的故事.(以上是废话) 小t和所有世俗的人们一样,期待那百年难遇的日食.驻足街头看天,看日月渐渐走近,小t的脖子那个酸呀(他坚持这个姿势已经有半个多小时啦).他低下仰起的头,环顾四周.忽然发现身边竟站着位漂亮的mm.天渐渐暗下,这mm在这街头竟然如此耀眼,她是天使吗?站着小t身边的天使. 小t对mm惊呼:"缘分呐~~&q

博弈模板

1 ///博弈模板 2 一)巴什博弈(Bash Game): 3 问题描述: 4 只有一堆n个物品,两个人轮流从这 5 堆物品中取物,规定每次至少取一 6 个,最多取m个.最后取光者得胜 7 问题解答: 8 很容易想到当n%(m+1)<>0时,先取必胜, 9 第一次先拿走n%(m+1),以后每个回合到 10 保持两人拿走的物品总和为m+1即可 11 12 二)威佐夫博弈(Wythoff Game): 13 问题描述: 14 有两堆各若干个物品,两个人轮流从某 15 一堆或同时从两堆中取同样多的

poj2975 Nim(经典博弈)

Nim Time Limit: 1000MS   Memory Limit: 65536K Total Submissions: 5866   Accepted: 2777 Description Nim is a 2-player game featuring several piles of stones. Players alternate turns, and on his/her turn, a player’s move consists of removing one or mor

经典博弈案例 &quot;囚徒困境” 分析

博弈论又称对策论,是研究两人或多人之间竞争合作关系的一门科学.目前被大众熟知的例子有:田忌赛马等等. 而所谓的"囚徒困境"也是这样的一个经典例子,大意是这样的: 两个嫌疑犯作案后被警察抓住,分别关在不同的屋子里接受审讯.警察知道两人有罪,但缺乏足够的证据.警察告诉每个人:如果两人都抵赖,各判刑一年;如果两人都坦白,各判八年;如果两人中一个坦白而另一个抵赖,坦白的放出去,抵赖的判十年.于是,每个囚徒都面临两种选择:坦白或抵赖. 在这种情景下,两个囚犯都可以做出自己的选择:供出他的同伴,即

sdut——4541:小志志和小峰峰的日常(取石子博弈模板题 4合1)

小志志和小峰峰的日常 Time Limit: 1000 ms Memory Limit: 65536 KiB Problem Description 小志志和小峰峰特别喜欢一起讨论一些很好玩的问题. 小志志发现一个有趣的游戏,马上和小峰峰进行了分享. 有 n 堆石子堆,每堆石子个数为 a[i]. 到小志志的回合:小志志可以选取其中的一堆,拿至少 1 个最多 x 个石子. 到小峰峰的回合:小峰峰可以选取其中的一堆,拿至少 1 个最多 y 个石子. 小志志先手,回合交替进行,到该玩家回合如果无法操作

威佐夫博弈模板

威佐夫博弈(Wythoff Game):有两堆各若干个物品,两个人轮流从某一堆或同时从两堆中取同样多的物品,规定每次至少取一个,多者不限,最后取光者得胜. //威佐夫博奕:有两堆各若干个物品,两个人轮流从某一堆或同时从两堆中取同样多的物品,规定每次至少取一个,多者不限,最后取光者得胜. //输入:两堆大小 //返回:0表示必败,1表示必胜 bool Wythoff(int n,int m) { if(n<m) swap(n,m); int k=n-m; n=(int)(k*(1+sqrt(5))

ACM三大常用博弈

尼姆博弈(Nimm Game) http://baike.baidu.com/link?url=QITS5sNMwXZsoxh5tAwYBsa-_GgUd66Vb4fjreoKkqlXmXSyPEE5qVXfxnq1IGRe4AgTxC6lFwROoKx7hZNwbK 威佐夫博弈(Wythoff Game) http://baike.baidu.com/link?url=X8KSAgEQ2b86gs6bFxYZpro--y-LrbR5aT6KPuFK5lCeoigV_YaPmaBws2X6HcL

51nod 1589 移数博弈【桶排序+链表】

1589 移数博弈 基准时间限制:1 秒 空间限制:262144 KB 分值: 80 难度:5级算法题 小A和小B在玩一个游戏. 他们拥有一个数列. 小A在该数列中选择出最大的那个数,然后移出该数列. 小B在剩下的数列中选择出最大的那个数,并乘上小A的那个值,作为他的答案. 那么现在问题来了. 他们现在想换一种玩法,把该数列长度大于等于2的区间(即n*(n-1)/2个区间)单独作为一个数列拿出来,然后做一次上述的游戏,然后计算出小B所有的答案,考虑到输出那么多数比较困难,因此他们想知道所有答案和