【博弈论】Codeforces Round #334 (Div. 2) E
2015-12-10 20:17
351 查看
又一个nim游戏的变形
我现在姑且把sg函数理解成一个整数值就好了,
f(x)代表一个状态的sg值代表着这个节点不能连到的点的最小值。
于是把k按照奇偶来分类
nim游戏意味着一堆石子的sg值等于这堆石子求亦或
所以我们来分析一下,
k=奇数的时候
f[2n]->f
^f
^f
.....^f
=f
f[0]=0,f[1]=1,f[2]=0,f[3]=1,f[4]=2;
让我们假设一下f[2n-1]!=0 f[2n]->f[2n-1] f[2n]->f
假设n=2k-1 那么f[2n]=0; 假设n=2k n可以从f[2k-1]和f[2k]转移过来,因为f[2k-1]!=0,那么推到最后还是看k落在4和3哪一个然后我们发现无论落在哪一个f[2k]也一定为0!但事实上f[2k]并不等于0
所以f[2n-1]只能等于0,然后推倒f[2n]。
k等于偶数的话
f[2n]->0所以f[2n]一定不等于0
那么f[2n-1]一定等于0
那么f[2n]一定等于1 ,因为f[2n]的后继只有f[2n-1]和0;
我现在姑且把sg函数理解成一个整数值就好了,
f(x)代表一个状态的sg值代表着这个节点不能连到的点的最小值。
于是把k按照奇偶来分类
nim游戏意味着一堆石子的sg值等于这堆石子求亦或
所以我们来分析一下,
k=奇数的时候
f[2n]->f
^f
^f
.....^f
=f
f[0]=0,f[1]=1,f[2]=0,f[3]=1,f[4]=2;
让我们假设一下f[2n-1]!=0 f[2n]->f[2n-1] f[2n]->f
假设n=2k-1 那么f[2n]=0; 假设n=2k n可以从f[2k-1]和f[2k]转移过来,因为f[2k-1]!=0,那么推到最后还是看k落在4和3哪一个然后我们发现无论落在哪一个f[2k]也一定为0!但事实上f[2k]并不等于0
所以f[2n-1]只能等于0,然后推倒f[2n]。
k等于偶数的话
f[2n]->0所以f[2n]一定不等于0
那么f[2n-1]一定等于0
那么f[2n]一定等于1 ,因为f[2n]的后继只有f[2n-1]和0;
#include<iostream> #include<cstdio> using namespace std; int f[11],x,k,n; int work(int x) { if (!(1&k)) { if (x<=4) return f[x]; else if (1&x) return 0; else return 1; } else { if (x<=4) return f[x]; else if (1&x) return 0; else return work(x/2)==1?2:1; } } int main() { int ans; ans=0; scanf("%d %d",&n,&k); if (1&k) { f[0]=0;f[1]=1;f[2]=0;f[3]=1;f[4]=2; } else { f[0]=0;f[1]=1;f[2]=2;f[3]=0;f[4]=1; } for (int i=1;i<=n;i++) { scanf("%d",&x); ans^=work(x); } printf("%s",ans?"Kevin":"Nicky"); return 0; }代码很简单,道理很麻烦
相关文章推荐
- Android官方文档翻译 十四 3.2Supporting Different Screens
- Quartz Cron表达式 在线生成器--http://www.cnblogs.com/yanweidie/p/3537144.html
- Hive ACID 特性 -- 0.13.0
- mysql 中的bit数据类型
- cmd 远程连接Oracle数据库
- 网络基础知识 第一章上
- 用AlertDialog来创建6种类型的对话框
- python语言特性及其数据类型
- mysql函数之比较函数
- python函数每日一讲 - compile()
- UVa-272
- cron表达式详解--http://www.cnblogs.com/linjiqin/archive/2013/07/08/3178452.html
- shell中“>/dev/null 2>&1”详解
- Metasploit - Jenkins
- UVa 1594 - Ducci Sequence【模拟】
- hdu 1059 Dividing 多重背包 超级水题 ★
- PAT乙级——1001 A+B和C (C/C++)
- hdu 1716 排列2(水题)
- SQLite学习笔记(一)
- UI第二十一天:集合视图