博弈论
里阿奴摩西
这个作者很懒,什么都没留下…
展开
-
[数论 博弈论] BZOJ 4147 [AMPPZ2014]Euclidean Nim
大搬运术:http://blog.csdn.net/PoPoQQQ/article/details/46549901#include#include#includeusing namespace std;inline char nc(){ static char buf[100000],*p1=buf,*p2=buf; if (p1==p2) { p2=(p1=buf)原创 2016-05-02 21:18:55 · 356 阅读 · 0 评论 -
[巴什博弈] HDU 2149 Public Sale & HDU 1847 Good Luck in CET-4 Everybody! & HDU 4764 Stone
2149简单的巴什博弈 需要抢占k+1k+1的倍数#include<cstdio>using namespace std;int main(){ freopen("t.in","r",stdin); freopen("t.out","w",stdout); int m,n; while (~scanf("%d%d",&m,&n)){ if (m<=n){ for原创 2017-02-28 07:51:17 · 466 阅读 · 0 评论 -
[K倍动态减法问题] HDU 2486 & HDU2580 & POJ3922 a simple stone game
这就是斐波那契博弈的加强版 对于某些特定的KK 我们有结论K=1K=1 后手必胜当且仅当nn是22的次幂 先手的策略是取lowbit(n)lowbit(n)K=2K=2 后手必胜当且仅当nn是斐波那契数 先手的策略是取nn的斐波那契拆分中最小的数这道题 我们仿照斐波那契博弈的构造方法 构造一个数列ana_n 将每个自然数都表示成ana_n中不连续的几项的和 f1+f2+⋯+fnf_1原创 2017-03-02 20:38:57 · 599 阅读 · 0 评论 -
[二分图博弈] BZOJ 1443 [JSOI2009]游戏Game & BZOJ 2437 [Noi2011]兔兔与蛋蛋
二分图博弈考虑这样一类博弈问题博弈状态可分为两类 即状态空间可分为两个集合 对应二分图X集和Y集任意合法的决策使状态从一类跳转到另一类 可以用二分图描述不可以转移至已访问的状态无法转移者判负。问题转化从二分图指定起点开始轮流沿着边移动 不可重复访问点 无法移动判负。不妨设起点s∈Xs\in X 考虑该二分图的某个最大匹配 若ss不属于某个最大匹配 则先手所转移到的点y∈Yy\in Y一定原创 2017-03-02 20:59:47 · 426 阅读 · 0 评论 -
[SG函数 Trie树合并] SPOJ COT3 Combat on a tree
开始搬神犇的题解 题意 给定一棵NN个点的树,11号点为根,每个节点是白色或者黑色。 双方轮流操作,每次选择一个白色节点,将从这个点到根的路径上的点全部染成黑色。 问先手是否必胜,以及第一步可选节点有哪些。 N<=100000N<=100000 分析 首先是博弈方面的分析。 令SG[x]SG[x]为,只考虑以xx为根的子树时的SGSG值。原创 2017-03-04 20:11:20 · 982 阅读 · 0 评论 -
[博弈论] Codeforces Gym 101190 NEERC 16 G. Game on Graph
首先确定平局 当Bob先手的状态的一个后继被确定不是平局, 这个状态不是平局; 当Alice先手的某个状态的所有后继都不是平局, 这个状态不是平局. 初始所有出度为0的点不是平局,类似拓扑排序搜索到的状态都不是平局, 剩下的是平局. 然后确定不是平局状态下输赢 类似咯 后手都赢先手就输 后手能输先手就赢 但是这样能把所有状态推出来吗? 不能 因为Bob一旦能不平局宁愿输都不平局 比如这原创 2017-04-15 20:24:51 · 987 阅读 · 0 评论 -
[博弈 杂题] Codeforces 794E Round #414 E. Choosing Carrot
这个题 首先我们要知道结论If n is even, the answer is while if n ≥ 3 is odd, the answer is . (If n = 1 then the answer is obviously a1.) 为什么呢 证明看题解然后可以动kk步就是所有长为n−kn-k子区间的答案的最大值#include<cstdio>#include<cstdlib>#原创 2017-05-23 21:09:26 · 1040 阅读 · 0 评论 -
[Nim] SRM 304 div1 TheXGame
翻译题解首先给出结论 把一段看做一堆石子 可以做到跟nim游戏等价具体 我们需要归纳证明一个结论 当前current_multiplier为 cc ,石子总数为 nn ,若异或和为 00 那么后手将以至少 n2c{n\over 2}c 的净得分获胜当游戏只剩最后两步的时候,两堆石子分别是n2n\over 2,那么后手会赢 n2c×2−n2c=n2c{n\over 2}c\times 2-{n\o原创 2017-06-29 12:27:45 · 334 阅读 · 0 评论 -
[Anti-Nim Anti-SG SJ定理] BZOJ 1022 [SHOI2008]小约翰的游戏John
我们直接分析吧 Nim博弈中如果规定最后取光者输,情况是怎样的? 初看起来问题要复杂很多(因为不能主动拿了,而要“躲着”拿,以免拿到最后一个物品),但对于Nim游戏来说,几乎是一样的:首先按照普通规则一样的策略进行,直到恰好有一个物品数大于1的堆x。在这样的情况下,只需要把堆x中的物品拿得只剩1个物品或者拿完,让对手面临奇数堆物品,这奇数堆物品每堆恰好1个物品。这样的状态显然是必败的。由于原创 2017-02-28 19:41:43 · 456 阅读 · 0 评论 -
[Every-SG 找规律] BZOJ 1393 [Ceoi2008]knights
题目 还是看官网吧 我们先分析单个游戏 nn很大 我们打表找规律 发现很有规律 最后一行一列要特判 写出来就是这样啦inline int SG(int x,int y){ if ((x%4==1||x%4==2)&&(y%4==1||y%4==2)) return 0; if (n%4==1 && ((x==n&&y!=n-1)||(y==n&&x!=n-1))) retur原创 2017-02-28 19:29:49 · 615 阅读 · 0 评论 -
[威佐夫博弈 黄金分割比 数学技巧] POJ 1067 取石子游戏 & HDU 1527 取石子游戏
论文:杨思雨--美,无处不在——浅谈“黄金分割”和信息学的联系以下摘录证明#include#include#include#includeusing namespace std;const double phi=(1+sqrt(5.0))/2.0;int main(){ freopen("t.in","r",std原创 2016-12-03 10:57:16 · 912 阅读 · 0 评论 -
[博弈] BZOJ 2927 [Poi1999]多边形之战 Polygons
设与R1相邻的三角形个数为k,那么先手胜当且仅当 (k =1) or (n-k-3)与k奇偶性不同 即(k=1) or n为偶数写法略丑 嘿嘿嘿嘿#include#include#includeusing namespace std;const int N=50005;int n,K;int a[N][3],b[N],c[N];原创 2016-12-17 11:08:52 · 413 阅读 · 0 评论 -
[博弈 图论] BZOJ 2922 [Poi1998]Chase
%%% BYVOID 注意到题上的一个看似无关紧要的条件,“不包括三角形”,这是一个突破口。由这个条件,我们可以证明,如果一个图不存在度数为1的顶点,B永远也追不上A。也就是B想追上A,必须让A“走投无路”。于是我们首先把原图处理一下,求出对于A来说的安全区。对于A来说的安全区,也就是一个没有度为1的顶点的最大子图。我们把这个安全区求出,并标记上。A要想不被B抓住,则一原创 2016-12-17 11:41:38 · 552 阅读 · 0 评论 -
[斐波那契博弈] BZOJ 2275 [Coci2010]HRPA & HDU 2516 取石子游戏
证明时用到的斐波那契数列的性质#include<cstdio>#include<cstdlib>#include<algorithm>using namespace std;typedef long long ll;ll n,f[100];int main(){ freopen("t.in","r",stdin); freopen("t.out","w",stdout); sca原创 2017-02-17 21:48:15 · 571 阅读 · 0 评论 -
[阶梯博弈] POJ 1704 Georgia and Bob
这个对于两两之间的距离看做一堆石子 这就相当于是一个阶梯博弈 对于阶梯博弈 相当于几个奇数堆的石子在做Nim 因为把偶数堆移到奇数堆 那可以再移到偶数堆 对局面不造成影响#include<cstdio>#include<cstdlib>#include<algorithm>using namespace std;const int N=1005;int n,a[N];int main(原创 2017-02-28 17:50:35 · 290 阅读 · 0 评论 -
[Multi-SG] POJ 3537 Crosses and Crosses & BZOJ 2940 [Poi2000]条纹
Multi-SG模型是指一个单一游戏又可以分裂成多个游戏 实际上并没有改变SG函数的实质 单一游戏的SG值是 它能分裂成的多个游戏的nim和 的mex 记忆化搜索下就好了POJ 3537画叉叉:两人在1*N的格子纸上轮流打叉,最先打出连续3个叉者获胜,问必胜者是谁?#include<cstdio>#include<cstdlib>#include<algorithm>#include<c原创 2017-02-28 17:56:52 · 407 阅读 · 0 评论 -
[海盗分金] HDU 1538 A Puzzle for Pirates
久闻大名的海盗分金问题 详见HDU 1538 A Puzzle for Pirates(经典的海盗分金推理)#include<cstdio>#include<cstdlib>#include<algorithm>#define read(x) scanf("%d",&(x))using namespace std;int fac[]={1,2,4,8,16,32,64,128,256,51原创 2017-02-28 19:16:21 · 425 阅读 · 0 评论 -
[删边游戏] POJ 3710 Christmas Game
详见组合游戏略述——浅谈SG游戏的若干拓展及变形 贾志豪 可证 叶子节点的 SG 值为 0 中间节点的 SG 值为它的所有子节点的 SG 值加 1 后的异或和对于这道题 通过分析发现了如下奇妙的性质:对于长度为奇数的环,去掉其中任意一个边之后,剩下的 两个链长度同奇偶,抑或之后的 SG 值不可能为奇数,所 以它的 SG 值为 1对于长度为偶数的环,去掉其中任意一个边之后,剩下的原创 2017-02-28 17:27:24 · 763 阅读 · 0 评论 -
[广义后缀自动机 SG值] 51Nod 1869 那些年,我们一起讲的故事
简直 在众人的帮助下理解了一个假题意 看完题解知道真题意 大概是每次加一个字符 这个串仍然要是Trie树的子串 直接建SAM 然后求SG值 不超过度数+1 也就是27 然后先手必胜 两边SG不同 那么按字典序数一数就好了#include<cstdio>#include<cstdlib>#include<algorithm>#include<cstring>#include<cass原创 2017-06-13 21:58:55 · 579 阅读 · 0 评论