杭电博弈入门题
来源:互联网 发布:国土防线2优化补丁 编辑:程序博客网 时间:2024/05/27 09:46
Good Luck in CET-4 Everybody!
Time Limit: 1000/1000 MS (Java/Others) Memory Limit: 32768/32768 K (Java/Others)Total Submission(s): 8128 Accepted Submission(s): 5235
Problem Description
大学英语四级考试就要来临了,你是不是在紧张的复习?也许紧张得连短学期的ACM都没工夫练习了,反正我知道的Kiki和Cici都是如此。当然,作为在考场浸润了十几载的当代大学生,Kiki和Cici更懂得考前的放松,所谓“张弛有道”就是这个意思。这不,Kiki和Cici在每天晚上休息之前都要玩一会儿扑克牌以放松神经。
“升级”?“双扣”?“红五”?还是“斗地主”?
当然都不是!那多俗啊~
作为计算机学院的学生,Kiki和Cici打牌的时候可没忘记专业,她们打牌的规则是这样的:
1、 总共n张牌;
2、 双方轮流抓牌;
3、 每人每次抓牌的个数只能是2的幂次(即:1,2,4,8,16…)
4、 抓完牌,胜负结果也出来了:最后抓完牌的人为胜者;
假设Kiki和Cici都是足够聪明(其实不用假设,哪有不聪明的学生~),并且每次都是Kiki先抓牌,请问谁能赢呢?
当然,打牌无论谁赢都问题不大,重要的是马上到来的CET-4能有好的状态。
Good luck in CET-4 everybody!
“升级”?“双扣”?“红五”?还是“斗地主”?
当然都不是!那多俗啊~
作为计算机学院的学生,Kiki和Cici打牌的时候可没忘记专业,她们打牌的规则是这样的:
1、 总共n张牌;
2、 双方轮流抓牌;
3、 每人每次抓牌的个数只能是2的幂次(即:1,2,4,8,16…)
4、 抓完牌,胜负结果也出来了:最后抓完牌的人为胜者;
假设Kiki和Cici都是足够聪明(其实不用假设,哪有不聪明的学生~),并且每次都是Kiki先抓牌,请问谁能赢呢?
当然,打牌无论谁赢都问题不大,重要的是马上到来的CET-4能有好的状态。
Good luck in CET-4 everybody!
Input
输入数据包含多个测试用例,每个测试用例占一行,包含一个整数n(1<=n<=1000)。
Output
如果Kiki能赢的话,请输出“Kiki”,否则请输出“Cici”,每个实例的输出占一行。
Sample Input
13
Sample Output
KikiCici
二话不说SG函数:
代码如下:
//http://acm.hdu.edu.cn/showproblem.php?pid=1847//Good Luck in CET-4 Everybody!#include<iostream> using namespace std;const int maxn=1005;int sg[maxn];void getsg(){ sg[0]=0; for(int i=0;i<=1000;i++) { bool vis[maxn]={false}; for(int j=0;(1<<j)<=i;j++) { int next=sg[i-(1<<j)]; vis[next]=true; } for(int j=0;j<=i;j++) { if(!vis[j]) { sg[i]=j; break; } } }}int main(){ getsg(); int n; while(scanf("%d",&n)==1) { if(sg[n])printf("Kiki\n"); else printf("Cici\n"); }}
Rabbit and Grass
Time Limit: 1000/1000 MS (Java/Others) Memory Limit: 32768/32768 K (Java/Others)Total Submission(s): 3443 Accepted Submission(s): 2581
Problem Description
大学时光是浪漫的,女生是浪漫的,圣诞更是浪漫的,但是Rabbit和Grass这两个大学女生在今年的圣诞节却表现得一点都不浪漫:不去逛商场,不去逛公园,不去和AC男约会,两个人竟然猫在寝食下棋……
说是下棋,其实只是一个简单的小游戏而已,游戏的规则是这样的:
1、棋盘包含1*n个方格,方格从左到右分别编号为0,1,2,…,n-1;
2、m个棋子放在棋盘的方格上,方格可以为空,也可以放多于一个的棋子;
3、双方轮流走棋;
4、每一步可以选择任意一个棋子向左移动到任意的位置(可以多个棋子位于同一个方格),当然,任何棋子不能超出棋盘边界;
5、如果所有的棋子都位于最左边(即编号为0的位置),则游戏结束,并且规定最后走棋的一方为胜者。
对于本题,你不需要考虑n的大小(我们可以假设在初始状态,棋子总是位于棋盘的适当位置)。下面的示意图即为一个1*15的棋盘,共有6个棋子,其中,编号8的位置有两个棋子。
大家知道,虽然偶尔不够浪漫,但是Rabbit和Grass都是冰雪聪明的女生,如果每次都是Rabbit先走棋,请输出最后的结果。
说是下棋,其实只是一个简单的小游戏而已,游戏的规则是这样的:
1、棋盘包含1*n个方格,方格从左到右分别编号为0,1,2,…,n-1;
2、m个棋子放在棋盘的方格上,方格可以为空,也可以放多于一个的棋子;
3、双方轮流走棋;
4、每一步可以选择任意一个棋子向左移动到任意的位置(可以多个棋子位于同一个方格),当然,任何棋子不能超出棋盘边界;
5、如果所有的棋子都位于最左边(即编号为0的位置),则游戏结束,并且规定最后走棋的一方为胜者。
对于本题,你不需要考虑n的大小(我们可以假设在初始状态,棋子总是位于棋盘的适当位置)。下面的示意图即为一个1*15的棋盘,共有6个棋子,其中,编号8的位置有两个棋子。
大家知道,虽然偶尔不够浪漫,但是Rabbit和Grass都是冰雪聪明的女生,如果每次都是Rabbit先走棋,请输出最后的结果。
Input
输入数据包含多组测试用例,每个测试用例占二行,首先一行包含一个整数m(0<=m<=1000),表示本测试用例的棋子数目,紧跟着的一行包含m个整数Ki(i=1…m; 0<=Ki<=1000),分别表示m个棋子初始的位置,m=0则结束输入。
Output
如果Rabbit能赢的话,请输出“Rabbit Win!”,否则请输出“Grass Win!”,每个实例的输出占一行。
Sample Input
2 3 533 5 60
Sample Output
Rabbit Win!Grass Win!
思路:水成狗啊。。 变相的n堆石头取石子,直接全部数直接亦或起来就好了。。
代码如下
//http://acm.hdu.edu.cn/showproblem.php?pid=1849//Rabbit and Grass#include<iostream> using namespace std;int main(){ int n,res,t; while(scanf("%d",&n)==1&&n) { scanf("%d",&res); n--; while(n--) { scanf("%d",&t); res^=t; } if(res)printf("Rabbit Win!\n"); else printf("Grass Win!\n"); }}
1 0
- 杭电博弈入门题
- 杭电 2188(博弈 水题 巴什博弈)
- 杭电hdu 1730 Northcott Game 博弈
- 杭电 2149(巴什博弈)
- 杭电 1846(巴什博弈)
- 杭电 1850(尼姆博弈)
- 杭电 1536(尼姆博弈)
- 杭电ACM1850(Nim博弈)
- 杭电ACM1907(Nim博弈)
- 尼姆博弈————(杭电2176题)可以做!
- 博弈入门
- 博弈入门
- 博弈入门
- 博弈入门
- 博弈入门
- 博弈入门
- 博弈入门
- 【巴什博弈】杭电 hdu 1846 Brave Game
- GW - ToDoList
- Greenplum的工作负载及资源管理
- java se-作业2--随机数-2016.719
- wifi 驱动 进阶11
- C的头文件和java的引包
- 杭电博弈入门题
- Android ActionBar的基本用法
- 用C# 加密字符串后、再用C++解密字符串的各自代码
- Learning Python 010 函数 2
- xml文档解析之DOM、SAX、JDOM、Dom4J总结
- Codeforces Round #363 (Div. 2), problem: (A)
- wpa_supplicant无线网络配置
- java se作业-GPSCar--2016.7.20
- Android Fragmnet详解