题意:一堆石子,有n个,两个人轮流取,每次都只能取2的幂次方个数,不能取的人输

思路:首先0是必败态,2的所有幂次都是必胜态。由于选的数模3只能是1或2,恰好又都是2的幂次,0,、3都为必败态,猜想3的所有倍数也为必败态,证明如下:设状态为x=3k,先手任选一个t,那么(x-t)%3不是1就是2,后手就取(x-t)%3,使得先手面临的状态始终是3的倍数,并且只要先手可以取,那么后手也就可以取,所以3的倍数都是必败态。对于x=3k+p,p=1或2的状态,先手都可以将其变成必败态,即先手取p=x%3即可,因此为必胜态。

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
/* ******************************************************************************** */
#include <iostream>                                                                 //
#include <cstdio>                                                                   //
#include <cmath>                                                                    //
#include <cstdlib>                                                                  //
#include <cstring>                                                                  //
#include <vector>                                                                   //
#include <ctime>                                                                    //
#include <deque>                                                                    //
#include <queue>                                                                    //
#include <algorithm>                                                                //
#include <map>                                                                      //
#include <cmath>                                                                    //
using namespace std;                                                                //
                                                                                    //
#define pb push_back                                                                //
#define mp make_pair                                                                //
#define X first                                                                     //
#define Y second                                                                    //
#define all(a) (a).begin(), (a).end()                                               //
#define fillchar(a, x) memset(a, x, sizeof(a))                                      //
                                                                                    //
typedef pair<intint> pii;                                                         //
typedef long long ll;                                                               //
typedef unsigned long long ull;                                                     //
                                                                                    //
#ifndef ONLINE_JUDGE                                                                //
void RI(vector<int>&a,int n){a.resize(n);for(int i=0;i<n;i++)scanf("%d",&a[i]);}    //
void RI(){}void RI(int&X){scanf("%d",&X);}template<typename...R>                    //
void RI(int&f,R&...r){RI(f);RI(r...);}void RI(int*p,int*q){int d=p<q?1:-1;          //
while(p!=q){scanf("%d",p);p+=d;}}void print(){cout<<endl;}template<typename T>      //
void print(const T t){cout<<t<<endl;}template<typename F,typename...R>              //
void print(const F f,const R...r){cout<<f<<", ";print(r...);}template<typename T>   //
void print(T*p, T*q){int d=p<q?1:-1;while(p!=q){cout<<*p<<", ";p+=d;}cout<<endl;}   //
#endif // ONLINE_JUDGE                                                              //
template<typename T>bool umax(T&a, const T&b){return b<=a?false:(a=b,true);}        //
template<typename T>bool umin(T&a, const T&b){return b>=a?false:(a=b,true);}        //
template<typename T>                                                                //
void V2A(T a[],const vector<T>&b){for(int i=0;i<b.size();i++)a[i]=b[i];}            //
template<typename T>                                                                //
void A2V(vector<T>&a,const T b[]){for(int i=0;i<a.size();i++)a[i]=b[i];}            //
                                                                                    //
const double PI = acos(-1.0);                                                       //
const int INF = 1e9 + 7;                                                            //
                                                                                    //
/* -------------------------------------------------------------------------------- */
int main() {
#ifndef ONLINE_JUDGE
    freopen("in.txt""r", stdin);
    //freopen("out.txt", "w", stdout);
#endif // ONLINE_JUDGE
    int n;
    while (cin >> n) {
        puts(n % 3? "Kiki" "Cici");
    }
    return 0;
}
/* ******************************************************************************** */

转载于:https://www.cnblogs.com/jklongint/p/4700715.html

[hdu1847]博弈,推理相关推荐

  1. LeetCode 810. 黑板异或游戏(博弈推理)

    1. 题目 一个黑板上写着一个非负整数数组 nums[i] . 小红和小明轮流从黑板上擦掉一个数字,小红先手. 如果擦除一个数字后,剩余的所有数字按位异或运算得出的结果等于 0 的话,当前玩家游戏失败 ...

  2. *HDU1847 博弈

    Good Luck in CET-4 Everybody! Time Limit: 1000/1000 MS (Java/Others)    Memory Limit: 32768/32768 K ...

  3. LeetCode 1025. 除数博弈(动态规划)

    1. 题目 爱丽丝和鲍勃一起玩游戏,他们轮流行动.爱丽丝先手开局. 最初,黑板上有一个数字 N .在每个玩家的回合,玩家需要执行以下操作: 选出任一 x,满足 0 < x < N 且 N ...

  4. 《多智能体博弈学习研究进展--罗俊仁,张万鹏》论文笔记

    目录 一.引言 二.多智能体学习简介 2.1多智能体学习系统组成 2.2 多智能体学习概述 2.3 多智能体学习研究方法分类 三. 多智能体博弈学习框架 3.1 多智能体博弈基础模型及元博弈 3.1. ...

  5. 2020最佳双人博弈对抗方法 | 基于强化学习对手建模的滚动时域演化算法「AI核心算法」...

    关注:耕智能,深耕AI脱水干货 作者:唐振韬  报道:深度强化学习 CASIA 转载请联系作者 前言 格斗游戏是一项极具挑战的双人实时对抗人工智能博弈任务,常具有组合动作空间规模大.角色属性风格多样. ...

  6. “深绿” 及 AlphaGo 对指挥与控制智能化的启示

    来源:<指挥与控制学报> 摘要: 随着未来战争日趋复杂.人工智能突飞猛进, 指挥与控制向智能化发展成为大势所趋. 美军的 "深绿" 计划项目虽因各 种原因暂停, 但其思 ...

  7. LeetCode 第 30 场双周赛(477/2545,前18.7%,第2次全部通过)

    文章目录 1. 比赛结果 2. 题目 1. LeetCode 5177. 转变日期格式 easy 2. LeetCode 5445. 子数组和排序后的区间和 medium 3. LeetCode 54 ...

  8. 使用eclipse安装python插件_如何为eclipse安装合适版本的python插件pydev

    pydev是一款优秀的Eclipse插件,大多数喜欢在eclipse开发软件的程序员(也许是java程序员)在开发python软件时希望继续使用eclipse,那么pydev是非常理想的选择. 1.安 ...

  9. “深绿” 及 AlphaGo 对QQ分分彩源码出租指挥与控制智能化的启示

    摘 要 随着未来QQ分分彩源码出租  dsluntan.com Q:3393756370 VX:17061863513战争日趋复杂.人工智能突飞猛进, 指挥与控制向智能化发展成为大势所趋. 美军的 & ...

最新文章

  1. Java springMVC POI 导出 EXCEL
  2. SAP Commerce Cloud Spartacus UI 的 ActionClass 数据结构设计
  3. Qt-捕获Windows消息
  4. .Net/C#分库分表高性能O(1)瀑布流分页
  5. JavaScript之面向对象学习六原型模式创建对象的问题,组合使用构造函数模式和原型模式创建对象...
  6. 论文浅尝 | 通过知识到文本的转换进行知识增强的常识问答
  7. 【参考】微信 - 数据库 -官方封装接口说明:
  8. Outlook 邮箱备份操作手册
  9. 如何使用ssh工具便于远程管理
  10. c#【 网络日志解析工具】开发篇-【媒体预览功能】--base64,webp响应解码为图片-》可做复制base64进行图片查看
  11. 概率论中经典概率模型
  12. 板级电源究竟该怎么选型芯片?(实战篇)
  13. 树莓派通过Pin2脚供电的注意事项
  14. 追求得到之日即其终止之时, 寻觅的过程亦即失去的过程。——村上
  15. React Native 布局实现测试
  16. win7\win10加域的电脑不输入密码直接登录登录电脑桌面
  17. TikTok三大流行趋势 钛动带你看懂TikTok
  18. (附源码)ssm校园交流网站 毕业设计 261624
  19. 百度语音android 集成,Android集成讯飞语音、百度语音、阿里语音识别
  20. Axure-9 日历选择制作

热门文章

  1. 权限管理系统中 管理员能看到所有用户的密码么_计算机毕设项目002之学生成绩管理系统...
  2. 怎么把rmd改成html,在Rmd中的htmlTable - 转换为Word docx
  3. html显示假的图片路径,实现自己网站的图片假水印功能
  4. 加载顺序_JAVA类代码块和属性的加载顺序问题,不要以为静态块始终最先执行了!...
  5. vsftp mysql_vsftp mysql安装配置
  6. 网页css样式中英对照,css中文样式(含中英文对照表).doc
  7. java 类之间转换,java数据类型之间转换应用方法
  8. influxdb查看数据库命令_influxdb基本命令
  9. linux的python2.7的paramiko_Python使用paramiko操作linux的方法讲解
  10. 怎么把动态图从python弄下来_Python将视频或者动态图gif逐帧保存为图片的方法