[hdu1847]博弈,推理
题意:一堆石子,有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< int , int > 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]博弈,推理相关推荐
- LeetCode 810. 黑板异或游戏(博弈推理)
1. 题目 一个黑板上写着一个非负整数数组 nums[i] . 小红和小明轮流从黑板上擦掉一个数字,小红先手. 如果擦除一个数字后,剩余的所有数字按位异或运算得出的结果等于 0 的话,当前玩家游戏失败 ...
- *HDU1847 博弈
Good Luck in CET-4 Everybody! Time Limit: 1000/1000 MS (Java/Others) Memory Limit: 32768/32768 K ...
- LeetCode 1025. 除数博弈(动态规划)
1. 题目 爱丽丝和鲍勃一起玩游戏,他们轮流行动.爱丽丝先手开局. 最初,黑板上有一个数字 N .在每个玩家的回合,玩家需要执行以下操作: 选出任一 x,满足 0 < x < N 且 N ...
- 《多智能体博弈学习研究进展--罗俊仁,张万鹏》论文笔记
目录 一.引言 二.多智能体学习简介 2.1多智能体学习系统组成 2.2 多智能体学习概述 2.3 多智能体学习研究方法分类 三. 多智能体博弈学习框架 3.1 多智能体博弈基础模型及元博弈 3.1. ...
- 2020最佳双人博弈对抗方法 | 基于强化学习对手建模的滚动时域演化算法「AI核心算法」...
关注:耕智能,深耕AI脱水干货 作者:唐振韬 报道:深度强化学习 CASIA 转载请联系作者 前言 格斗游戏是一项极具挑战的双人实时对抗人工智能博弈任务,常具有组合动作空间规模大.角色属性风格多样. ...
- “深绿” 及 AlphaGo 对指挥与控制智能化的启示
来源:<指挥与控制学报> 摘要: 随着未来战争日趋复杂.人工智能突飞猛进, 指挥与控制向智能化发展成为大势所趋. 美军的 "深绿" 计划项目虽因各 种原因暂停, 但其思 ...
- LeetCode 第 30 场双周赛(477/2545,前18.7%,第2次全部通过)
文章目录 1. 比赛结果 2. 题目 1. LeetCode 5177. 转变日期格式 easy 2. LeetCode 5445. 子数组和排序后的区间和 medium 3. LeetCode 54 ...
- 使用eclipse安装python插件_如何为eclipse安装合适版本的python插件pydev
pydev是一款优秀的Eclipse插件,大多数喜欢在eclipse开发软件的程序员(也许是java程序员)在开发python软件时希望继续使用eclipse,那么pydev是非常理想的选择. 1.安 ...
- “深绿” 及 AlphaGo 对QQ分分彩源码出租指挥与控制智能化的启示
摘 要 随着未来QQ分分彩源码出租 dsluntan.com Q:3393756370 VX:17061863513战争日趋复杂.人工智能突飞猛进, 指挥与控制向智能化发展成为大势所趋. 美军的 & ...
最新文章
- Java springMVC POI 导出 EXCEL
- SAP Commerce Cloud Spartacus UI 的 ActionClass 数据结构设计
- Qt-捕获Windows消息
- .Net/C#分库分表高性能O(1)瀑布流分页
- JavaScript之面向对象学习六原型模式创建对象的问题,组合使用构造函数模式和原型模式创建对象...
- 论文浅尝 | 通过知识到文本的转换进行知识增强的常识问答
- 【参考】微信 - 数据库 -官方封装接口说明:
- Outlook 邮箱备份操作手册
- 如何使用ssh工具便于远程管理
- c#【 网络日志解析工具】开发篇-【媒体预览功能】--base64,webp响应解码为图片-》可做复制base64进行图片查看
- 概率论中经典概率模型
- 板级电源究竟该怎么选型芯片?(实战篇)
- 树莓派通过Pin2脚供电的注意事项
- 追求得到之日即其终止之时, 寻觅的过程亦即失去的过程。——村上
- React Native 布局实现测试
- win7\win10加域的电脑不输入密码直接登录登录电脑桌面
- TikTok三大流行趋势 钛动带你看懂TikTok
- (附源码)ssm校园交流网站 毕业设计 261624
- 百度语音android 集成,Android集成讯飞语音、百度语音、阿里语音识别
- Axure-9 日历选择制作
热门文章
- 权限管理系统中 管理员能看到所有用户的密码么_计算机毕设项目002之学生成绩管理系统...
- 怎么把rmd改成html,在Rmd中的htmlTable - 转换为Word docx
- html显示假的图片路径,实现自己网站的图片假水印功能
- 加载顺序_JAVA类代码块和属性的加载顺序问题,不要以为静态块始终最先执行了!...
- vsftp mysql_vsftp mysql安装配置
- 网页css样式中英对照,css中文样式(含中英文对照表).doc
- java 类之间转换,java数据类型之间转换应用方法
- influxdb查看数据库命令_influxdb基本命令
- linux的python2.7的paramiko_Python使用paramiko操作linux的方法讲解
- 怎么把动态图从python弄下来_Python将视频或者动态图gif逐帧保存为图片的方法