威佐夫博弈(高精度)
来源:互联网 发布:阿里云备案承诺书demo 编辑:程序博客网 时间:2024/06/05 07:02
威佐夫博弈详解
只要形成了奇异局势,那么下个人必须;
威佐夫博弈:
有两堆各若干个物品,两个人轮流从某一堆或同时从两堆中取同样多的物品,规定每次至少取一个,多者不限,最后取完者得胜。这种情况下是颇为复杂的。
可以用两个数(a[k],b[k])(ps:(a[k]≤b[k])k为一个自然数)表示两堆物品的数量。如果该数量为奇异局势,那么先手输;
前几个奇异局势如下:(0,0,)、(1,2)、(3,5)、(4,7)、(6,10)······起始值a[0]=b[0]=0;k=0;
可以看出a[k]是在之前未出现过的最小自然数,而b[k] = a[k]+k,k代表出现的第几个奇异局势;
性质:
1.任何自然数都包含在一个且仅有一个的奇异局势中。
证明:若(a[k],b[k])为一个奇异局势,因为b[k]=a[k]+k,a[k]>a[k-1] =》 b[k] >a[k-1]+k >a[k-1]+k-1 =》 b[k-1] > a[k-1].
2.任何操作都会将奇异局势变成非奇异局势
由性质1可知,即使是同时减少,两个数的差值不变,所以不可能成为其他奇异局势的差,因此也是非奇异局势;
3.可采用适当的方法将非奇异局势变为奇异局势,那么下一个必输;
结论:两个人如果都采用正确操作,那么面对非奇异局势,先拿者必胜;反之,则后拿者取胜。
那么任给一个局势(a,b),怎样判断它是不是奇异局势呢?
我们有如下公式:a表示第一堆的个数,b表示第二堆的个数,c表示二者之差,当然a必须小于b;
再找规律的话我们会发现,a= c* 1.618
而1.618 = (sqrt(5)+ 1) / 2 。
将黄金分割率的24位小数分为三部分
按照多项式乘法可以得到下面的代码
#include<stdio.h>#include<string.h>#include<algorithm>using namespace std;#define LL long long#define MOD 1000000000LL temp[3]={618033988,749894848,204586834};int main(){ LL n,m,T; //freopen("in.txt","r",stdin); scanf("%lld",&T); while(T--) { scanf("%lld%lld",&n,&m); if(n<m) swap(n,m); LL diff=n-m; LL ta=diff/MOD,tb=diff%MOD; LL ans=tb*temp[2]; ans=ans/MOD+ta*temp[2]+tb*temp[1]; ans=ans/MOD+ta*temp[1]+tb*temp[0]; ans=ans/MOD+ta*temp[0]+diff; puts(ans==m?"B":"A"); } return 0;}
0 0
- 威佐夫博弈(高精度)
- HDU 5973 威佐夫博弈+JAVA高精度
- HDU-5973 Game of Taking Stones(威佐夫博弈+高精度)(C++高精度)
- 博弈入门---(巴什博弈,威佐夫博弈,nim博弈)
- Codeforces Gym 100379I Move the queen to the corner! 威佐夫博弈变形 + 高精度
- 2016 ICPC 大连 C Game of Taking Stones 【威佐夫博弈+大数+高精度】
- 威佐夫(Wythoff)博弈
- 威佐夫博弈(介绍)
- POJ1067(威佐夫博弈)
- 四种博弈浅谈(巴什博弈、威佐夫博弈、妮姆博奕、斐波那契博弈)
- 博弈模板(巴什博奕,威佐夫博弈,尼姆博弈,斐波那契博弈)
- 博弈-威佐夫博弈
- 威佐夫博弈 && Fibonacci博弈
- 高精度除法(高精度除以高精度)
- HDU 5953 Game of Taking Stones(威佐夫博弈+高精度+二分)——The 2016 ACM-ICPC Asia Dalian Regional Contest
- 51nod1072---威佐夫博弈(51nod基础:博弈)
- [POJ](1067)取石子游戏 ---威佐夫博弈(博弈)
- 威佐夫博弈(Wythoff Game)
- 二叉树的最大深度
- 二分的终止条件具体怎么搞?
- 详解SpringMVC中Controller的方法中参数的工作原理[附带源码分析]
- [LeetCode]460. LFU Cache
- 经典查找算法
- 威佐夫博弈(高精度)
- 可重入与不可重入函数的区别以及对程序的影响
- Android 之dialog 以及界面设计规则,画板项目需求分析,变换画线Path 大小 长度Canvase变换
- Caffe源码解读(一):代码组织结构
- Unix环境高级编程读书笔记(2.1)
- XMLHttpRequest对象的常用属性
- HM学习一
- 为什么ISR内部不可以用printf和malloc函数
- iOS架构师之路:制定代码规范