HDU 5591 ZYB's Game(取石子)
2015-12-05 21:49
417 查看
题意:AB选手猜数字。正确数字为X,若选手猜的数字为i,若i比X小,则主持人会告诉他[1, i]都不是正确答案,比X大则[i, n]都非答案。但其实选手是知道答案的(假装不知道23333)。谁最后被逼的猜X谁就输。给定n问后首胜的X有几个。
思路:本质还是取石子游戏。先手的人只要取一定量的石子使得X两边石子的数量相等的话就可以保证自己必胜。那么显然,当且仅当X为1~n中心,即n为奇数时,此时X可取到严格意义上的中心。此时先手者至少取一个,一定会使两边不等。那么后手再取相等就可以保证自己必胜了。
思路:本质还是取石子游戏。先手的人只要取一定量的石子使得X两边石子的数量相等的话就可以保证自己必胜。那么显然,当且仅当X为1~n中心,即n为奇数时,此时X可取到严格意义上的中心。此时先手者至少取一个,一定会使两边不等。那么后手再取相等就可以保证自己必胜了。
#include <algorithm> #include <iostream> #include <sstream> #include <cstring> #include <cstdio> #include <vector> #include <string> #include <queue> #include <stack> #include <cmath> #include <set> #include <map> using namespace std; typedef long long LL; #define mem(a, n) memset(a, n, sizeof(a)) #define ALL(v) v.begin(), v.end() #define si(a) scanf("%d", &a) #define sii(a, b) scanf("%d%d", &a, &b) #define siii(a, b, c) scanf("%d%d%d", &a, &b, &c) #define pb push_back #define eps 1e-8 const int inf = 0x3f3f3f3f, N = 1e3 + 5, MOD = 1e9 + 7; int T, cas = 0; int n, m; int main(){ #ifdef LOCAL freopen("/Users/apple/input.txt", "r", stdin); // freopen("/Users/apple/out.txt", "w", stdout); #endif si(T); while(T --) { si(n); if(n & 1) puts("1"); else puts("0"); } return 0; }
相关文章推荐
- git_sop 脚本使用说明
- 蓝懿 iOS 技术交流和心得分享 12.5
- UVALive 7276 Wooden Signs
- Android-多点触控的实现示例详解
- JavaScript中的self、this、call、apply、prototype、initialize
- git_sop 脚本使用说明
- [简单实用系列] listview下拉刷新,加载更多
- Storyboard要点与技巧
- MySQL 5.1同步到5.5卡库问题一则
- 简单PHP会话(session)说明
- window下的navigator对象
- Spring MVC集成Tiles框架
- 一起学libcef--libcef的基本类和方法介绍(如何产生一个你自己的浏览器)
- 新手学socket
- 一起学libcef--libcef的基本类和方法介绍(如何产生一个你自己的浏览器)
- 简单选择排序
- iOS绘图
- Unix中使用MeteoInfo - Xmanager设置
- [LeetCode]007-Reverse Integer
- 模块度与Louvain社区发现算法