HDU2177——取(2堆)石子游戏(威佐夫博弈)
来源:互联网 发布:淘宝店标图片制作 编辑:程序博客网 时间:2024/04/27 18:06
题目链接
这道题是HDU1527的升级版,题意都好懂,是威佐夫博弈的一道模板题,如果不是很了解威佐夫博弈,可以看一看我写的HDU1527的博客,我大致陈述了威佐夫博弈的一些基本知识,有助于解决此题。这道题目就是判断了当前状态为非奇异局势的时候如何拿走石头使其成为奇异局势,由于数据范围在可接受范围之内,所以先吧0<=k<=1000000的奇异局势存在vis数组内然后,对于所有可能的更改进行暴力找出复合条件的奇异局势即可。
#include<iostream>#include<cstring>#include<cstdio>#include<cmath>#include<algorithm>using namespace std;int vis[1000005]= {0};int main(){ //freopen("in.in","r",stdin); //freopen("out.out","w",stdout); for(int i=1; i<1000005; i++) vis[i]=(int)(i*1.0*(1+sqrt(5))/2); int n, m; while(scanf("%d%d",&n,&m)&&(n||m)) { int k=m-n; if(vis[k]==n) { printf("0\n"); continue; } printf("1\n"); if(n>vis[k]&&m>vis[k]+k) printf("%d %d\n",vis[k],vis[k]+k); for(int i=1; i<1000005; i++) if(vis[i]==n) { if(m>vis[i]+i) printf("%d %d\n",vis[i],vis[i]+i); break; }else if(vis[i]==m) { if(n>vis[i]+i) printf("%d %d\n",vis[i],vis[i]+i); break; } for(int i=1; i<1000005; i++) if(vis[i]+i==m) { if(n>vis[i]) printf("%d %d\n",vis[i],vis[i]+i); break; }else if(vis[i]+i==n) { if(m>vis[i]+i) printf("%d %d\n",vis[i],vis[i]+i); break; } } return 0;}
0 0
- HDU2177——取(2堆)石子游戏(威佐夫博弈)
- HDU2177————取(2堆)石子游戏(威佐夫博弈)
- ACM-威佐夫博弈之取(2堆)石子游戏——hdu2177
- HDU2177 取(2堆)石子游戏 威佐夫博弈
- HDU2177:取(2堆)石子游戏(威佐夫博弈)
- 取(2堆)石子游戏(威佐夫博弈+hdu2177)
- HDU2177:取(2堆)石子游戏(威佐夫博弈)
- hdu2177 取(2堆)石子游戏 (威佐夫博弈)
- hdu2177 —— 威佐夫博奕模板(胜利者操作)——hdu2177取(2堆)石子游戏
- hdu2177 取(2堆)石子游戏----威佐夫博弈,输出第一步最优策略
- acm杭电HDU2177取(2堆)石子游戏(威佐夫博弈)
- HDU2177----取(2堆)石子游戏
- hdu2177 取(2堆)石子游戏
- hdu2177 取(2堆)石子游戏 威佐夫博奕
- hdu2177 取(2堆)石子游戏
- hdu2177取(2堆)石子游戏
- [博弈] 取(2堆)石子游戏
- 取(2堆)石子游戏(威佐夫博弈)
- 画家问题(关灯问题)
- 几个STL算法
- HDU----1686
- MySQL快速入门09----查询(1)
- 数据结构实验之串三:KMP应用
- HDU2177——取(2堆)石子游戏(威佐夫博弈)
- ubuntu下安装nginx时依赖库zlib,pcre,openssl安装方法
- 什么是共享栈,以及共享栈的代码实现
- Codeforces 701A+701B
- java
- 杂乱
- linux sort 命令详解
- 平均年龄(<cmath> 中 ceil 函数的应用)---- 美团2016研发工程师在线编程题
- hdu4284Travel(TSP+floyd)