博弈论讲解(一)

常见的博弈论有巴什博弈,威佐夫博弈,尼姆博弈,斐波那契博弈等等,今天暂时讲几个

文章目录

  • 一.巴什博弈
    • 证明:
    • 代码
  • 二.威佐夫博奕
    • 结论:
    • 代码:
  • 三.环形博弈
    • 结论
    • 证明
    • 代码:

一.巴什博弈

巴什博奕:只有一堆n个物品,两个人轮流从中取物,规定每次最少取一个,最多取m个,最后取光者为胜。

证明:

显然,如果n=m+1,那么由于一次最多只能取m个,所以,无论先取者拿走多少个,后取者都能够一次拿走剩余的物品,后者取胜。
因此我们可以推算出:如果n=(m+1)*r+s,(r为任意自然数,s≤m),那么先取者要拿走s个物品,如果后取者拿走k(≤m)个,那么先取者再拿走m+1-k个,结果剩下(m+1)(r-1)个,以后保持这样的取法,那么先取者肯定获胜。
总之,要保持给对手留下(m+1)的倍数,就能最后获胜。
也就是若n%(m+1)==0,则先手必输
变形:
如果条件不变,改成最后取光的人失败
结论:若(n-1)%(m+1)== 0 ,则后手胜利

代码

   if(n%(m+1)==0)  cout<<"后手必胜"<<endl;  else cout<<"先手必胜"<<endl;  

二.威佐夫博奕

有两堆各若干个物品,两个人轮流从某一堆或同时从两堆中取同样多的物品,规定每次至少取一个,多者不限,最后取光者得胜。
A无论怎么取,B总是可以 针对着来

结论:

奇异局势下先手必败,非奇异局势下先手必胜。
(a,b)表示两堆物品的数量,也称之为局势
奇异局势:就是当A面对这个局势时就已经输了。你也可以理解成必输局面。比如(0,0)或者(1,2)(3,5)等等
那怎么知道一个局势是否为奇异局势
a与b满足这个条件:
ak =[k(1+√5)/2],bk= ak + k
(k=0,1,2,…,n 方括号表示取整函数)ak<bk

整合一下
ak = [ ( bk - ak ) ( 1 + √5 ) / 2 ]

证明:略(其实我也不是很明白)

代码:

if(a>b)  swap(a,b);  ans=floor((b-a)*(1+sqrt(5.0))/2.0);  if(ans==a) cout<<"后手必胜"<<endl;  else cout<<"先手必胜"<<endl;  

三.环形博弈

n个石子围成一圈,每次只能取相邻的k(1<=k<=n)个石子,取完者胜。
今天一个同学问我,我才想起来这个。。。

结论

如果n<=k,先手必赢(也就是如果先手能一次拿完就输)
当k等于1时,n为奇先手胜,n为偶后手胜。

证明

因为是环形,假如说A第一次没去完,那B只要取与A相对的石头,也就是A拿完后,还剩奇数个石头,B就拿与A对应位置的一个石头,如果剩偶数个,就拿对应位置的两个
这样就把一个环拆分成两个链,且每个链都是相等的
用sg定理,sg[x] ^ sg[x]= 0
这就是必败态,所以先手A输了
当k=1时,这就不用我讲了吧。。。

代码:

bool circle_game(int n,int k){if(k>=n||k==1&&(n&1)) return 1;return 0;
}

例题 HDU - 3951

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/320158.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

浅谈surging服务引擎中的rabbitmq组件和容器化部署

1、前言上个星期完成了surging 的0.9.0.1 更新工作&#xff0c;此版本通过nuget下载引擎组件&#xff0c;下载后&#xff0c;无需通过代码build集成&#xff0c;引擎会通过Sidecar模式自动扫描装配异构组件来构建服务引擎&#xff0c;而这篇将介绍浅谈surging服务引擎中的rabbi…

csp-j/s总结

文章目录csp-jcsp-s总结csp-j T1傻逼题(我是傻逼&#xff09;&#xff0c;手残把&打成整除了&#xff08;大样例还对了gg&#xff09; T2乱推&#xff0c;然后打了个O(n)O(n)O(n)&#xff0c;却WA了15分&#xff1f; T3看了看&#xff0c;修改不会相互影响&#xff1f;那不…

51nod1220-约数之和【莫比乌斯反演,杜教筛】

正题 题目链接:http://www.51nod.com/Challenge/Problem.html#problemId1220 题目大意 给出nnn&#xff0c;求∑i1n∑j1nσ(i∗j)\sum_{i1}^n\sum_{j1}^n\sigma(i*j)i1∑n​j1∑n​σ(i∗j) 其中σ\sigmaσ表示约数和。 解题思路 首先有结论σ(i∗j)∑x∣i∑y∣j[gcd(x,y)1]…

CDQ分治与整体二分

首先说明&#xff0c;CDQ分治与整体二分都是离线算法 CDQ分治&#xff1a; 流程&#xff1a; 1.我们要解决一系列问题&#xff0c;这些问题一般包含修改和查询操作&#xff0c;可以把这些问题排成一个序列&#xff0c;用一个区间[L,R]表示。 2.分。递归处理左边区间[L,M]和…

博弈论讲解(二)

文章目录斐波那契博弈问题&#xff1a;结论证明&#xff1a;尼姆博奕(Nimm Game)问题&#xff1a;结论&#xff1a;证明&#xff1a;代码&#xff1a;公平组合博弈&#xff08;Impartial Combinatori Games&#xff09;理论知识&#xff08;1&#xff09;、若面临末状态者为获胜…

.net core实践系列之短信服务-架构设计

前言上篇《.net core实践系列之短信服务-为什么选择.net core&#xff08;开篇&#xff09;》简单的介绍了&#xff08;水了一篇&#xff09;.net core。这次针对短信服务的架构设计和技术栈的简析。源码地址&#xff1a;https://github.com/SkyChenSky/Sikiro.SMS为什么需要架…

【矩阵乘法】Matrix Power Series(poj 3233)

Matrix Power Series poj 3233 题目大意 给你一个矩阵A&#xff0c;让你求SAA2A3…AkS A A^2 A^3 … A^kSAA2A3…Ak 输入样例 2 2 4 0 1 1 1输出样例 1 2 2 3n⩽30,k⩽109,m<104,a∈A,a⩽32768n \leqslant 30,k \leqslant 10^9,m < 10^4,a\in A,a \leqslant32…

P3702-[SDOI2017]序列计数【矩阵乘法】

正题 题目链接:https://www.luogu.com.cn/problem/P3702 题目大意 nnn个不超过mmm的正整数&#xff0c;要求和是ppp的倍数且至少有一个质数。 解题思路 用总方案数减去只有非质数的方案数即可。 线性筛出所有质数&#xff0c;然后矩阵乘法转移即可。 时间复杂度O(mp3log⁡n…

字符串hash(一)

很久没遇到过hash的题了&#xff0c;今天来重新温故一下 文章目录序言常用的几个字符串hash方法&#xff1a;hash公式&#xff08;自然溢出&#xff09;讲解模板单hash讲解模板双hash讲解代码总结序言 你有没有想过&#xff0c;字符串存储一大溜&#xff0c;比较时又麻烦又折腾…

CAP 2.3版本发布,支持 MongoDB

前言经过2个月的调整及测试&#xff0c;CAP 2.3 版本终于发布了&#xff0c;这个版本最大的特性就是对于 MongoDB 的支持&#xff0c;感谢博客园团队的keke同学对于 MongoDB 支持所提供的 PR&#xff0c;相信随着博客园的使用&#xff0c;CAP 会越来越多的帮助到更多的人。CAP …

【矩阵乘法】递推(ssl 1532)

递推 ssl 1532 题目大意 给出数列a0,a1…ana_0,a_1…a_na0​,a1​…an​和fff的前n−1n-1n−1项f0,f1…fn−1f_0,f_1…f_{n-1}f0​,f1​…fn−1​ fia0∗fi−na1∗fi−(n−1)...an−1∗fi−1anf_ia_0*f_{i-n}a_1*f_{i-(n-1)}...a_{n-1}*f_{i-1}a_nfi​a0​∗fi−n​a1​∗fi…

P3185-[HNOI2007]分裂游戏【SG函数】

正题 题目链接:https://www.luogu.com.cn/problem/P3185 题目大意 nnn个瓶子&#xff0c;开始第iii个里有pip_ipi​个糖果&#xff0c;操作的人可以找到一个三元组(i,j,k)i<j≤k(i,j,k)\ i<j\leq k(i,j,k) i<j≤k然后取出iii中的一个糖果&#xff0c;在j,kj,kj,k中各…

牛客网 【每日一题】5月9日 过河

链接&#xff1a; 时间限制&#xff1a;C/C 1秒&#xff0c;其他语言2秒 空间限制&#xff1a;C/C 131072K&#xff0c;其他语言262144K 64bit IO Format: %lld题目描述 在河上有一座独木桥&#xff0c;一只青蛙想沿着独木桥从河的一侧跳到另一侧。在桥上有一些石子&#xff0…

.NETCore 实现容器化Docker与私有镜像仓库管理

一、Docker介绍Docker是用Go语言编写基于Linux操作系统的一些特性开发的&#xff0c;其提供了操作系统级别的抽象&#xff0c;是一种容器管理技术&#xff0c;它隔离了应用程序对基础架构&#xff08;操作系统等&#xff09;的依赖。相较于虚拟机而言&#xff0c;Docker共享的是…

【矩阵乘法】幼儿园数学题I(ssl 2513)

幼儿园数学题I ssl 2513 题目大意 定义fn(512)n−1f_n\left ( \frac{\sqrt{5}1}{2}\right )^{n-1}fn​(25​1​)n−1&#xff0c;求前n项的和,&#xff08;对109710^971097取模&#xff09;&#xff08;题目貌似出了些问题&#xff0c;实际上fff等价于斐波那契数列&#xff…

P4492-[HAOI2018]苹果树【dp】

正题 题目链接:https://www.luogu.com.cn/problem/P4492 题目大意 开始有一个节点&#xff0c;第iii次在一个儿子不超过222的节点下面长出一个新儿子编号为iii。求所有方案下树的路径长度和。 解题思路 考虑计算每条边的贡献&#xff0c;设gig_igi​表示大小为iii的树的形态…

字符串hash(二)

从上一届已经讲了字符串hash的方法&#xff0c;hash后怎么用也很重要 文章目录一.查询子串的hash值查询子串减去期中一个字符后的hash值查询两个子串拼接的hash值**hash的模板&#xff08;自然溢出&#xff09;**char s[10010]; ull hashs(char s[]) {int lenstrlen(s);ull bas…

记一次.net core 集成vue 实践

简介以前我们总是喜欢用服务端渲染前端&#xff08;虽然也有htmlajax这种做法&#xff09;&#xff0c;后来node诞生了&#xff0c;前端工具链&#xff08;不如说生态&#xff09;诞生了&#xff0c;大家都开始了前端的重构之路&#xff0c;本文将以一简单案例介绍下我们是如何…

【矩阵乘法】幼儿园数学题II(ssl 2514)

幼儿园数学题II ssl 2514 题目大意 给出式子 f(1)1,f(2)1f(1)1,f(2)1f(1)1,f(2)1 f(n)−f(3)−f(4)−f(5)−...−f(n−3)−f(n−2)(n4)(n−1)/2f(n)-f(3)-f(4)-f(5)-...-f(n-3)-f(n-2)(n4)(n-1)/2f(n)−f(3)−f(4)−f(5)−...−f(n−3)−f(n−2)(n4)(n−1)/2 让你求前n项的和…

P3705-[SDOI2017]新生舞会【0/1分数规划,费用流】

正题 题目链接:https://www.luogu.com.cn/problem/P3705 题目大意 nnn对人&#xff0c;给出两个n∗nn*nn∗n的矩形a,ba,ba,b。求一个nnn配对满足∑i1naxi,yi∑i1nbxi,yi\frac{\sum_{i1}^na_{x_i,y_i}}{\sum_{i1}^nb_{x_i,y_i}}∑i1n​bxi​,yi​​∑i1n​axi​,yi​​​最大。…