题意:有n个石子堆,每一个都可以轮流做如下操作:选一个石堆,移除至少1个石子,然后可以把这堆石子随便拿几次,随便放到任意的其他石子数不为0的石子堆,也可以不拿。不能操作败。

思路:我们先来证明,如果某个石子数有偶数堆,则先手必败,因为无论先手怎么做,后手都能模仿先手,最后把石子取光。显然全是偶数堆是必败态。如果有奇数堆怎么办?我们就把最大的奇数堆取光,然后把其他奇数堆变成偶数堆。但是一定能保证可以吗?答案是可以。假设奇数堆的石子数为 x1,x2,x3...xn,那么我们分别给每一堆加上x2-x1,x3-x2...xn-xn-1,我们把这些我们加上的石子数加起来,发现我们一共用了xn-x1个石子,显然小于等于(xn) -1个石子。

参考:POJ 1740 A New Stone Game 题解《挑战程序设计竞赛》

代码:

#include<set>
#include<map>
#include<stack>
#include<cmath>
#include<queue>
#include<vector>
#include<cstdio>
#include<cstring>
#include<iostream>
#include<algorithm>
typedef long long ll;
const int maxn = 100 + 10;
const int seed = 131;
const ll MOD = 1e9 + 7;
const int INF = 0x3f3f3f3f;
using namespace std;
bool vis[maxn];
int main(){int n;while(~scanf("%d", &n) && n){memset(vis, false, sizeof(vis));for(int i = 0; i < n; i++){int u;scanf("%d", &u);vis[u] = !vis[u];}int flag = 0;for(int i = 1; i <= 100; i++)if(vis[i]) flag = 1;if(flag) printf("1\n");else printf("0\n");}return 0;
}

转载于:https://www.cnblogs.com/KirinSB/p/9683918.html

POJ 1740 A New Stone Game(博弈)题解相关推荐

  1. poj 1740 A New Stone Game 博弈

    题目来源: http://poj.org/problem?id=1740 分析: 均势为:  偶数堆,且 x,x, y,y,z,z... 即先人无论怎么取,后人跟先人一个走法,那么后人一定取最后一堆. ...

  2. POJ 2348 Euclid's Game(博弈)题解

    题意:有a,b两个数字,两人轮流操作,每次可以选择两个之中较小的数字,然后另一个数字减去选择数字的任意倍数(不能减到负数),直到其中一个为0,不能操作为败 思路:这题用博弈NP思想,必败点和必胜点之间 ...

  3. POJ - 3922 A simple stone game(K倍博弈-斐波那契博弈进阶)

    题目链接:点击查看 题目大意:给出 n 个石子,两人轮流取石子,取到最后一个石子的人获胜,规定: 第一次取石子不能全部取完 后续取石子的数量必须不超过前一次的K倍 题目分析:大佬博客:https:// ...

  4. POJ 3710 Christmas Game(Tarjan+博弈SG函数)

    [题目链接] http://acm.hust.edu.cn/vjudge/problem/toListProblem.action#OJId=POJ&probNum=3710&titl ...

  5. 【poj 3321】Apple Tree 题意&题解&代码(C++)

    题目链接: http://poj.org/problem?id=3321 题意: 给你一颗n个节点的树,每个节点开始有一个苹果,然后m次修改,每次修改使得某个节点的苹果改变,有变成没有,没有变成有.询 ...

  6. POJ 3922 A simple stone game(K倍减法游戏)

    题目链接:http://poj.org/problem?id=3922 题意:两人取一堆石子,石子有n个. 先手第一次不能全部取完但是至少取一个.之后每人取的个数不能超过另一个人上一次取的数的K倍.拿 ...

  7. POJ 1694 An Old Stone Game ★(排序+树+递归)

    题解转自:http://blog.sina.com.cn/s/blog_7c060f190100r4cr.html 自己不想再写了--囧--   题意:以树作为载体,模拟一个游戏.大致规则就是在叶节点 ...

  8. D. Tokitsukaze, CSL and Stone Game(博弈)

    Problem - D - Codeforces 时津风和CSL正在玩一个石头的小游戏. 一开始,有n个石子堆,其中第ii堆有aiai石子.两位玩家轮流走棋.时津风先走.每一回合,棋手选择一个非空的棋 ...

  9. ACM 1740 A New Stone Game http://acm.pku.cn/JudgeOnline/problem?id=1740

    题目大意:有N堆石头,每堆石头数目在1到100之间,最多有10堆.两人分别取走石头.取石头的规则是:每次只能从1堆中取,每次取走至少1个.取过后还可以把这堆的石头任意分配到其它堆上(这些堆必须有石头, ...

最新文章

  1. 【MATLAB】矩阵信息的获取
  2. PHPStorm2016如何安装主题
  3. cloud-init 工作原理 - 每天5分钟玩转 OpenStack(171)
  4. Asp.Net用户控件编程实例
  5. 学习 PixiJS — 交互工具
  6. LeetCode 998. 最大二叉树 II
  7. 全流分析取证:高级威胁哪里跑?!
  8. Eclipse,工程builed失败的原因。
  9. xshell访问内网虚拟机
  10. LINUX编译x265:make-Makefiles.bash: ccmake: not found
  11. 《java高并发编程详解》第0集
  12. 基于基因组数据的癌症亚型发现聚类研究
  13. [noip2014]解方程 hash+秦九昭
  14. 常见的非线性回归模型
  15. Java基础-运算符
  16. Supervisely 人像分割数据集
  17. 使用遇到的问题_使用网络线上教学系统遇到问题怎么办?
  18. WLAN——一篇让你从0到1了解无线局域网的文章
  19. vim 清空文本内容指令
  20. selenium 无头模式

热门文章

  1. 网络github_GitHub项目awesome-latex-drawing新增内容(四):绘制贝叶斯网络
  2. 【Mac】789uiojklm键失效、启用小键盘(数字键盘)鼠标键的解决方法
  3. 日期上午下午怎么用date存_Java12都要出来了,你还在使用Date操作日期吗?
  4. [Angularjs] 第一步开始一个项目
  5. MongoDB最大连接数的查看与修改
  6. Postfix:邮件系统常见错误代码解释
  7. maven eclipse操作
  8. PhoneGap开发环境搭建
  9. 在Unity中为模型使用表情
  10. Linux 下离线手动下载安装 C++ 开发环境