HDU1847 Good Luck in CET-4 Everybody!

大学英语四级考试就要来临了,你是不是在紧张的复习?也许紧张得连短学期的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!

Input输入数据包含多个测试用例,每个测试用例占一行,包含一个整数n(1<=n<=1000)。Output如果Kiki能赢的话,请输出“Kiki”,否则请输出“Cici”,每个实例的输出占一行。

Sample Input

1
3

Sample Output

Kiki
Cici

数学问题 博弈论

构造一个sg函数(不知道算不算),简单递推即可

n=0是必败态,n=2的幂是必胜态。

其他时候,只要能转移到一个必败态,就是必胜态。

后来发现好像只要看n%3是否等于0就能判断了,也是神奇

 1 /*by SilverN*/
 2 #include<algorithm>
 3 #include<iostream>
 4 #include<cstring>
 5 #include<cstdio>
 6 #include<cmath>
 7 #include<vector>
 8 using namespace std;
 9 const int mxn=1010;
10 int pw[]={0,1,2,4,8,16,32,64,128,256,512};
11 int n;
12 int sg[mxn];
13 void init(){
14     sg[0]=0;
15     for(int i=1;i<=1000;i++){
16         for(int j=1;j<=10 && pw[j]<=i;j++){
17             if(sg[i-pw[j]]==0){
18                 sg[i]=1;
19                 break;
20             }
21         }
22     }
23     return;
24 }
25 int main(){
26     int i,j;
27     init();
28     while(scanf("%d",&n)!=EOF){
29         if(sg[n])printf("Kiki\n");
30         else printf("Cici\n");
31     }
32     return 0;
33 }
时间: 2024-12-31 03:43:31

HDU1847 Good Luck in CET-4 Everybody!的相关文章

hdu1847 Good Luck in CET-4 Everybody! ,巴什博奕,理解SG函数

hdu1847 Good Luck in CET-4 Everybody! 题意: 总共n张牌,双方轮流抓牌,每人每次抓牌的个数只能是2的幂次(即:1,2,4,8,16-),抓完牌,胜负结果也出来了:最后抓完牌的人为胜者.给出n,问先手赢还是后手赢? PS:当然这题可以直接推出 n%3==0必败,否则必胜. //巴什博奕 下面介绍另外一种做法 SG值:一个点的SG值就是一个不等于它的后继点的SG的且大于等于零的最小整数.//同mex()函数 简单点来讲就是当前状态离最近一个必败点的距离. SG(

hdu----(1847)Good Luck in CET-4 Everybody!(简单巴什博奕)

Good Luck in CET-4 Everybody! Time Limit: 1000/1000 MS (Java/Others)    Memory Limit: 32768/32768 K (Java/Others)Total Submission(s): 5328    Accepted Submission(s): 3422 Problem Description 大 学英语四级考试就要来临了,你是不是在紧张的复习?也许紧张得连短学期的ACM都没工夫练习了,反正我知道的Kiki和C

hdu1847 Good Luck in CET-4 Everybody!(博弈论)

仔细想这个和前面那个一样 让对方面对一个数值(包括倍数)时,对面就是输了 因为: 对面拿一个数,但是拿不了这个数值 我拿完后补全这个数值 对面那sb还是面对这个值 这个题的数值是3 #include<cstdio> int main() { int n; while(~scanf("%d",&n)){ if(n%3) printf("Kiki\n"); else printf("Cici\n"); } return 0; }

HDU1847 Good Luck in CET-4 Everybody!【博弈】

题目链接: http://acm.hdu.edu.cn/showproblem.php?pid=1847 题目大意: 有N张牌,两个人轮流抓,每次抓的牌数只能是2的幂次(2^0.2^1.2^2.-).最后抓完牌的人获胜. Kiki和Cici都是足够聪明的学生,Kiki先抓,输出赢得比赛的人. 思路: 找必败点,很容易知道当N==3时是一个必败点,因为只能取1或是2,而剩下的牌肯定能被对手取完, 所以3是一个必败点.4能取1把场面变为3,所以4是必胜点,5能取2把场面变为3.而6的话,要么取 完剩

hdu1847 Good Luck in CET-4 Everybody!(巴什博弈)

http://acm.hdu.edu.cn/showproblem.php?pid=1847 从1开始枚举情况,找规律.1先手胜2先手胜3先手败4先手胜5先手胜... n只要能转移到先手败,就可以实现先手胜,否则n情况下就是先手败.发现规律时%3 1 #include<iostream> 2 #include<cstdio> 3 #include<cstring> 4 #include<algorithm> 5 #include<cstdlib>

ACM-博弈之Good Luck in CET-4 Everybody!——hdu1847

<1>概念 优先级队列,顾名思义,就是一种根据一定优先级存储和取出数据的队列.它可以说是队列和排序的完美结合体,不仅可以存储数据,还可以将这些数据按照我们设定的规则进行排序.优先级队列是堆的一种常见应用.有最大优先级队列(最大堆)和最小优先级队列(最小堆).优先级队列是一种维护有一组元素构成的集合S的数据结构. <2>优先队列支持的基本运算 [cpp] view plaincopy //建立一个保存元素为int的优先级队列,其实是建了一个小顶堆 //但是请特别注意这样的建的堆默认是

HDOJ 1823 Luck and Love

二维线段树模版题... Luck and Love Time Limit: 10000/1000 MS (Java/Others)    Memory Limit: 32768/32768 K (Java/Others) Total Submission(s): 5397    Accepted Submission(s): 1348 Problem Description 世界上上最远的距离不是相隔天涯海角 而是我在你面前 可你却不知道我爱你 ―― 张小娴 前段日子,枫冰叶子给Wiskey做了

Good Luck Charlie(听力恢复训练)

系统的音标学习完成后.在暑假进入了稍大强度的听力恢复训练.材料选择的是一部家庭情景喜剧片<Good Luck Charlie>,该剧是2010开播的.剧中运用到的大量词汇是和现在比较贴合的,例如:美国人常用的一些缩写:一些和这个时代比较贴合的词汇:APP ,WIFI--:说话的语速就是人家美国人的正常语速:情景是贴近生活的一些生活场景-- 对该材料的第一次学习,首先是了解该剧的剧情,其次才是正是学习该剧.一般情况下是头一天看三遍该剧,第二天开始新一集时,需要将昨天的那一集再复习一遍.对于美剧的

hdu 1847 Good Luck in CET-4 Everybody!

法一: 首先我们可以想到在面对3的时候是必败局,谁面对3时无论拿多少都会败 ! <---这是关键 那么就要尽量造成这样的局势给对方,因为任何不是3的倍数的数加1或2都可以变成3的倍数, 同理减去1或2也可以变成3的倍数,也就是说假设目前的个数不是3的倍数,那我肯定能把它 拿成3的倍数,比如现在是11个,那我拿走2个就变成9,这样就造成对方为3的倍数局势,那 么对方拿m个我都可以通过拿1或者2使总共一轮拿的数目成为3的倍数 #include<stdio.h> int main() { in