HDU 1847 Good Luck in CET-4 Everybody! (博弈论sg)
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!
1
3
Kiki
Cici
解题思路:
1、用博弈论sg函数能够解
![]()
watermark/2/text/aHR0cDovL2Jsb2cuY3Nkbi5uZXQvYTEwNjE3NDc0MTU=/font/5a6L5L2T/fontsize/400/fill/I0JBQkFCMA==/dissolve/70/gravity/SouthEast" alt="">
依据NP图的关系。发现 n%3=0时,Cici赢,否则Kiki赢
2、用DP去解。用dp[n][f]
表示还剩n张牌时。f先走。谁赢。
解题代码:
1、sg找规律
#include <iostream>
#include <cstdio>
using namespace std; int main(){
int n;
while(scanf("%d",&n)!=EOF){
if(n%3==0) printf("Cici\n");
else printf("Kiki\n");
}
return 0;
}
2、DP方法
#include <iostream>
#include <cstdio>
#include <cstring>
using namespace std; const int maxn=1100;
int dp[maxn][2]; int DP(int n,int f){
if(n<=0) return 1-f;
if(dp[n][f]!=-1) return dp[n][f];
if(f==0){
int ans=1;
for(int i=1; i<=n ;i=(i<<1) ){
if(DP(n-i,1-f)<ans ) ans=DP(n-i,1-f);
}
return dp[n][f]=ans;
}else{
int ans=0;
for(int i=1; i<=n ;i=(i<<1) ){
if(DP(n-i,1-f)>ans ) ans=DP(n-i,1-f);
}
return dp[n][f]=ans;
}
} int main(){
memset(dp,-1,sizeof(dp));
int n;
while(scanf("%d",&n)!=EOF){
if(DP(n,0)==0) printf("Kiki\n");
else printf("Cici\n");
}
return 0;
}
HDU 1847 Good Luck in CET-4 Everybody! (博弈论sg)的更多相关文章
- 题解报告:hdu 1847 Good Luck in CET-4 Everybody!(入门SG值)
题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=1847 Problem Description 大学英语四级考试就要来临了,你是不是在紧张的复习?也许紧 ...
- HDU.1847 Good Luck in CET-4 Everybody! ( 博弈论 SG分析)
HDU.1847 Good Luck in CET-4 Everybody! ( 博弈论 SG分析) 题意分析 简单的SG分析 题意分析 简单的nim 博弈 博弈论快速入门 代码总览 //#inclu ...
- hdu 1847 Good Luck in CET-4 Everybody!(巴什博弈)
Good Luck in CET-4 Everybody! HDU - 1847 大学英语四级考试就要来临了,你是不是在紧张的复习?也许紧张得连短学期的ACM都没工夫练习了,反正我知道的Kiki和Ci ...
- HDU 1847 Good Luck in CET-4 Everybody! (巴什博弈)
题目链接:HDU 1847 Problem Description 大学英语四级考试就要来临了,你是不是在紧张的复习?也许紧张得连短学期的ACM都没工夫练习了,反正我知道的Kiki和Cici都是如此. ...
- 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 ...
- HDU 1847 Good Luck in CET-4 Everybody!(找规律,或者简单SG函数)
Good Luck in CET-4 Everybody! Time Limit: 1000/1000 MS (Java/Others) Memory Limit: 32768/32768 K ...
- HDU 1847 Good Luck in CET-4 Everybody!(找规律版巴什博奕)
Time Limit: 1000/1000 MS (Java/Others) Memory Limit: 32768/32768 K (Java/Others)Total Submission( ...
- HDU 1847 Good Luck in CET-4 Everybody! (博弈)
题意:不用说了吧,都是中文的. 析:虽说这是一个博弈的题,但是也很简单的,在说这个题目前我们先说一下巴什博弈定理. 巴什博弈定理:一堆物品有n个,有两个人(两个人足够聪明)轮流取,规定每次至少取一个, ...
- hdu 1847 Good Luck in CET-4 Everybody!(sg)
Good Luck in CET-4 Everybody! Time Limit: 1000/1000 MS (Java/Others) Memory Limit: 32768/32768 K ...
随机推荐
- 1008: [HNOI2008]越狱
n个人,m种信仰: 问你相邻的人信仰不同的情况有多少种? 首先第一个人有m种选择,第二个人有m-1种选择,后面所有的人都只有m-1种选择: 所以结果就是m^n-m*(m-1)^(n-1) #inclu ...
- Android编程中常用的PopupWindow和Dialog对话框
注意:PopupWindow组件的使用问题,PopupWindow是一个阻塞对话框,如果你直接在Activity创建的方法中显示它,则会报错:android.view.WindowManager$Ba ...
- POJ 2186 Popular Cows(Tarjan)
http://poj.org/problem?id=2186 题意 :给你n头牛,m对关系,每对关系由两个编号组成,u和v代表着u认为v是受欢迎的,如果1认为2是受欢迎的,2认为3是受欢迎的,那1认为 ...
- php smarty 配置四个存放目录
require("Smarty.class.php"); $smarty = new Smarty(); $smarty -> template_dir = "./ ...
- linux 访问windows共享
1. windows端建立一个用户user用于共享访问 2. 共享一个目录,设置user可以访问,并在windows系统中确认可以访问 3. linux端创建一个用于挂载共享目录的目录 mkdi ...
- Linux内核态抢占机制分析
http://blog.sina.com.cn/s/blog_502c8cc401012pxj.html [摘要]本文首先介绍非抢占式内核(Non-Preemptive Kernel)和可抢占式内核( ...
- D-Bus,kdbus和Binder
http://blog.sina.com.cn/s/blog_4af327e10101irie.html 材料来自:The unveiling of kdbus 和 Kdbus Details .后一 ...
- 第五章 HID设备
5.1 HID介绍 为简化USB设备的开发过程,USB提出了设备类的概念.所有设备类都必须支持标准USB描述符和标准USB设备请求.如果有必要,设备类还可以自行定义其专用的描述符和设备请求,这分别被称 ...
- delphi中formatFloat代码初探(在qt下实现floatformat的函数)
由于项目需要,需要在qt下实现floatformat的函数.之前写过一个,但是写得不好.决定重新写一个,参考delphi xe2下的实现.把xe2下的相关代码都看了一遍,xe2的代码思路在这里贴出来. ...
- BZOJ_1615_[Usaco2008_Mar]_The Loathesome_Hay Baler_麻烦的干草打包机_(模拟+宽搜/深搜)
描述 http://www.lydsy.com/JudgeOnline/problem.php?id=1615 一个主动轮带着一些轮子转,轮子带着轮子转,轮子带着轮子转...一个非主动轮只会被一个轮子 ...