HDU 2509 Be the Winner (Nim博弈)
2016-02-04 11:09
295 查看
Problem Description
Let's consider m apples divided into n groups. Each group contains no more than 100 apples, arranged in a line. You can take any number of consecutive apples at one time.
For example "@@@" can be turned into "@@" or "@" or "@ @"(two piles). two people get apples one after another and the one who takes the last is
the loser. Fra wants to know in which situations he can win by playing strategies (that is, no matter what action the rival takes, fra will win).
Input
You will be given several cases. Each test case begins with a single number n (1 <= n <= 100), followed by a line with n numbers, the number of apples in each pile. There is a blank line between cases.
Output
If a winning strategies can be found, print a single line with "Yes", otherwise print "No".
Sample Input
2
2 2
1
3
Sample Output
No
Yes
尼姆博弈变形,最后苹果数为1的堆要单独考虑。。。
以下AC代码:
Source
ECJTU 2008 Autumn Contest
Let's consider m apples divided into n groups. Each group contains no more than 100 apples, arranged in a line. You can take any number of consecutive apples at one time.
For example "@@@" can be turned into "@@" or "@" or "@ @"(two piles). two people get apples one after another and the one who takes the last is
the loser. Fra wants to know in which situations he can win by playing strategies (that is, no matter what action the rival takes, fra will win).
Input
You will be given several cases. Each test case begins with a single number n (1 <= n <= 100), followed by a line with n numbers, the number of apples in each pile. There is a blank line between cases.
Output
If a winning strategies can be found, print a single line with "Yes", otherwise print "No".
Sample Input
2
2 2
1
3
Sample Output
No
Yes
尼姆博弈变形,最后苹果数为1的堆要单独考虑。。。
以下AC代码:
#include <stdio.h> #include <string.h> int main() { int n,i; int flag; int sum; int a[55]; while(~scanf("%d",&n)) { sum=0; flag=0; for(i=0;i<n;i++) { scanf("%d",&a[i]); flag^=a[i]; if(a[i]>=2) sum++; //记录苹果数不为1的堆得堆数 } if (!flag) //奇异局势 { if(sum<=1) printf("Yes\n"); else printf("No\n"); } else //非奇异局势 { if(sum>=1) printf("Yes\n"); else printf("No\n"); } } return 0; }
Source
ECJTU 2008 Autumn Contest
相关文章推荐
- 大数据时代:你搞不定“用户画像”,对手就搞定你!
- 深入理解java垃圾回收机制
- JQuery Autocomplete实战
- AJAX 跨域请求 - JSONP获取JSON数据
- 由一次long SQL调优引发de血案
- Spring整合SpringMVC
- 毕业设计代码记录
- 短信验证平台接口调用实例
- HASH相关
- WCF创建学习二:使用XML配置终结点发布服务端
- MySQL创建用户与授权
- ubuntu下如何查看用户登录及系统授权相关信息【转】
- [LeetCode][JavaScript]Power of Three
- DDOs攻击-Java实现
- JPA学习笔记-Spring整合JPA
- JPA学习笔记-JPQL
- JPA学习笔记-二级缓存
- JPA学习笔记-映射双向多对多的关联关系
- mysql数据库一主多从的搭建
- JPA学习笔记-映射双向一对一的关联关系