poj 楼天成的男人八题系列 A New Stone Game 博弈问题
2012-03-10 17:48
363 查看
参考了大牛的blog http://hi.baidu.com/niren_cn/blog/item/ae99d0bb16791f1918d81fb5.html
第一,只有一堆x,第一个人直接全部取走就胜利了.(显然x,y,y的情况也是第一人胜,所以忽略相等的石头);
第二,x,y的形式(这里不妨假设递增,下同).第一人从第二堆中取走(y-x)个石头,这样两堆相等,最终还是第一人胜;
第三,x,y,z的形式.第一人从最后一堆中取走(z+x-y)个石头,再将(y-x)个石头移到第一堆上(z>y-x一定成立),这样还是第一人胜.
依此类推,移动个数最多的石头堆然后再分配总可以前面变成两两相等的情况.可见只要开始不全是两两相等,那先取者必胜.
第一,只有一堆x,第一个人直接全部取走就胜利了.(显然x,y,y的情况也是第一人胜,所以忽略相等的石头);
第二,x,y的形式(这里不妨假设递增,下同).第一人从第二堆中取走(y-x)个石头,这样两堆相等,最终还是第一人胜;
第三,x,y,z的形式.第一人从最后一堆中取走(z+x-y)个石头,再将(y-x)个石头移到第一堆上(z>y-x一定成立),这样还是第一人胜.
依此类推,移动个数最多的石头堆然后再分配总可以前面变成两两相等的情况.可见只要开始不全是两两相等,那先取者必胜.
#include<iostream> #include<algorithm> using namespace std; int main() { int a[15],n; while(scanf("%d",&n),n!=0) { for(int i=1;i<=n;i++) scanf("%d",&a[i]); sort(a+1,a+1+n); int cou=0; for(int i=2;i<=n;i++) { if(a[i-1]==a[i]) { i++; //这里wa了一次 我要求的是对所以i++ cou++; } } if(cou*2!=n) printf("1\n"); else printf("0\n"); } return 0; }
相关文章推荐
- POJ 1740 -- A New Stone Game ( 楼天城之男人系列 )
- 博弈论(男人八题):POJ 1740 A New Stone Game
- POJ1740 A New Stone Game 博弈
- poj 1740 A New Stone Game(博弈)
- poj1740(A New Stone Game+男人八题之一)
- 携程第二场 Poj 1182 食物链(带权并查集) Poj 1948 Triangular Pastures Poj(dp二维背包) 1740 A New Stone Game(博弈)
- POJ1740_A New Stone Game_推规律的博弈
- poj1740 A New Stone Game 博弈
- poj 1740 A New Stone Game(博弈)
- POJ 题目1740 A New Stone Game(博弈)
- POJ 1740 A New Stone Game (博弈)
- POJ 1740 A New Stone Game(博弈)
- [POJ1740]A New Stone Game(博弈)
- 【POJ1740】A New Stone Game 构造博弈
- POJ 1740 A New Stone Game【博弈】
- POJ 1740 A New Stone Game 博弈,规律
- poj1740 A New Stone Game(阶梯博弈)
- NYOJ137 取石子(三) ([PKU][POJ][1740][A New Stone Game楼教主真男人8题)
- POJ 1740 A New Stone Game(博弈)
- poj 1740 A New Stone Game(博弈)