洛谷$P$2252 取石子游戏 博弈论】的更多相关文章

正解:博弈论 解题报告: 传送门! 威佐夫博弈板子昂$QwQ$ 关于这一类问题也有个结论,是说,先手必败的状态一定形如$(\left \lfloor i+\phi \right \rfloor,\left \lfloor i+\phi^{2} \right \rfloor)$,然后$\phi=\frac{\sqrt{5}+1}{2}$ 证是不会证的了,但找到了一篇证明看这个趴$QAQ$ #include<bits/stdc++.h> using namespace std; #define i…
POJ.1067 取石子游戏 (博弈论 威佐夫博弈) 题意分析 简单的威佐夫博弈 博弈论快速入门 代码总览 #include <cstdio> #include <cmath> #include <algorithm> using namespace std; int main() { int n,m; while(scanf("%d %d",&n,&m) != EOF){ if( n > m) swap(n,m); doubl…
HDU.2516 取石子游戏 (博弈论 斐波那契博弈) 题意分析 简单的斐波那契博弈 博弈论快速入门 代码总览 #include <bits/stdc++.h> #define nmax 51 using namespace std; int main() { int fib[nmax]; fib[1] = fib[2] = 1; for(int i = 3;i<nmax;++i){ fib[i] = fib[i-1] + fib[i-2]; } int n; while(scanf(&…
链接: P2252 [SHOI2002]取石子游戏|[模板]威佐夫博弈 前言: 第一眼大水题,第二眼努力思考,第 N 眼我是大水逼. 题意: 不看题目标题都应该能看出来是取石子类的博弈论. 有两堆石子,可以在任意一堆取走任意正整数的石子,也可以同时在两堆中取走相同任意正整数的石子.判断当前状态. 分析: 这就是大名鼎鼎的威佐夫博弈了. 本着不会正解就暴力打表的思想,我们可以打出暴力,这其实是解决本题的关键所在.在暴力中我们可以发现只有以下状态先手必败: \((0,0),(1,2),(3,5),(…
题目链接 \(Description\) 1堆石子有n个.两人轮流取.先取者第1次可以取任意多个,但不能全部取完.以后每次取的石子数不能超过上次取子数的2倍,取完者胜.问谁能赢. \(Solution\) 斐波那契博弈(Fibonacci Nim) 结论: 后手必胜当且仅当石子数为Fibonacci数 证明见: http://blog.csdn.net/dgq8211/article/details/7602807 #include <cstdio> const int INF=0x7ffff…
很显然的nim游戏的变形,很好找规律 先手败:2,3,5,8,13…… 其他先手胜.即满足菲波拉数列. 代码如下: #include<iostream> #include<stdio.h> #include<algorithm> #include<iomanip> #include<cmath> #include<cstring> #include<vector> #define ll __int64 #define pi…
题面 题解 威佐夫博弈 代码 #include<cstdio> #include<algorithm> #include<cmath> #define RG register const double Phi((sqrt(5) + 1.) / 2.); int a, b; inline int abs(int a) { return a < 0 ? a : -a; } int main() { while(~scanf("%d%d", &…
题面 HDU1527 取石子游戏 洛谷2252 取石子游戏 题解 裸的威佐夫博弈 #include<iostream> #include<cmath> using namespace std; const double phi=(sqrt(5)+1)/2; int a,b; int main() { ios::sync_with_stdio(false); while(cin>>a>>b) { if(a>b)swap(a,b); int A=abs(a…
[BZOJ1413][ZJOI2009]取石子游戏(博弈论,动态规划) 题面 BZOJ 洛谷 题解 神仙题.jpg.\(ZJOI\)是真的神仙. 发现\(SG\)函数等东西完全找不到规律,无奈只能翻题解. 首先设\(L[i][j]\)表示在\([i,j]\)这一段区间的左侧放上一堆数量为\(L[i][j]\)的石子后,先手必败.同理定义\(R[i][j]\)表示右侧. 首先我们可以证明\(L[i][j]\)唯一,假设存在两个\(L[i][j]\),显然较大的那个可以通过一步转移转移到较小的那个,…
P2252 取石子游戏 有两堆石子,数量任意,可以不同.游戏开始由两个人轮流取石子.游戏规定,每次有两种不同的取法,一是可以在任意的一堆中取走任意多的石子:二是可以在两堆中同时取走相同数量的石子.最后把石子全部取完者为胜者.现在给出初始的两堆石子的数目,你先取,假设双方都采取最好的策略,问最后你是胜者还是败者. 这题比较狗☞,要开$long$$long$ 所谓的威佐夫博弈,貌似应用的只是他的结论,两个绝绝顶聪明的人,在玩一个灰常高大上的游戏——取石子, 即给你两堆石子,两个人轮流取,可以取走其中…