![](https://img-blog.csdnimg.cn/20201014180756925.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
博弈论
文章平均质量分 53
nlj1999
这个作者很懒,什么都没留下…
展开
-
BZOJ 1188: [HNOI2007]分裂游戏
题目好熟悉(⊙o⊙)想起来是07年的论文题然后不会做┑( ̄Д  ̄)┍遂去翻论文照着论文的放法乱搞出来了#include#include#includeusing namespace std;bool ex[100];int sg[30];void build(){ sg[0]=0; for(int i=1;i<21;i++){ memset(ex,0,siz原创 2016-03-22 14:49:54 · 267 阅读 · 0 评论 -
POJ 3317 Stake Your Claim
有了之前的基础,3进制DP根本不在话下啊,半个小时就搞定了(本来就是水题好不好)极大极小过程+记忆化搜索话说第一次接触博弈论,还有点紧张(紧张个P啊连Alpha-Beta剪枝都没有的水题)然后大概看了下极大极小过程,发现这题根本用不到什么啊TAT顺便吐槽数据好水63MS就过了,竟然rank27,不科学。#include#include#includeusing names原创 2016-02-28 19:19:47 · 499 阅读 · 0 评论 -
poj 1085 Triangle War
人生第一道真正意义上的极大极小过程+alphabeta剪枝。其实一开始让我写alphabeta剪枝我是拒绝的,于是我写了个记忆化搜索,TLE了。。。。。。。哦然后优化了一下,300多MS A了但是不爽啊说好的博弈论呢当然要用正解了于是学了下alphabeta剪枝,其实挺简单的,就是alpha为已知max游戏者的下界,beta为min游戏者的上界,如果beta假设在博弈树原创 2016-02-29 11:02:54 · 677 阅读 · 0 评论 -
hdu 1907 John
anti-SG裸题终于刷到09年了\(^o^)/话说SJ定理这个名字怎么这么喜感呢。#include#include#includeusing namespace std;int a[50],n;int sg(){ int ans=0; for(int i=1;i<=n;i++) ans^=a[i]; return ans;}bool check1(){ for原创 2016-03-24 15:20:42 · 268 阅读 · 0 评论 -
HDU 3595 GG and MM
首先很容易得出来对于单组游戏先拿到p/q>1的那个人赢,因为他可以控制奇偶。但是这是Every-SG游戏。然后就只好看别人的题解了QAQ感觉好像很厉害的样子,大概就是他要改变局面就要使步数多一步,然后就可以套论文里的结论了。#include#include#includeusing namespace std;int f[105];int calc(int x,int y原创 2016-03-24 16:23:43 · 342 阅读 · 0 评论 -
HDU 3094 A tree game
树上删边游戏#include#include#includeusing namespace std;const int N=100000+5;struct Edge{int to,next;}e[N<<1];int head[N],cnt;void ins(int u,int v){ e[++cnt]=(Edge){v,head[u]};head[u]=cnt;}int s原创 2016-03-24 16:52:30 · 291 阅读 · 0 评论 -
POJ 3710 Christmas Game
第一眼看成仙人掌上博弈了,好口怕。然后发现环只会作为基树的叶子出现,然后通过讨论(看论文)发现环是可以缩掉的。所以就变成树上博弈了。。。。。听说有重边???那不应该是环吗 (⊙ˍ⊙)#include#include#includeusing namespace std;const int N=100+5;struct Edge{int to,next;}e[N<<1];原创 2016-03-24 17:50:05 · 358 阅读 · 0 评论 -
BZOJ 3576: [Hnoi2014]江南乐
首先把游戏拆解一下会发现每一堆石子是一个游戏所以是Multi-SG,总体sg值是每个游戏的sg值的异或和考虑单个游戏,数量为n的一堆石子的后继状态是拆完之后的石子的sg值的异或和于是结合SG定理就得到了一个优秀的m^2算法(优秀个毛线啊)(m为石子个数的最大值)然后我们考虑一个比较特殊的情况显然把n拆成m堆会出现k=n/m和k+1两种情况,堆数分别是k1=m-k2,k2=n%m原创 2016-04-12 11:13:30 · 760 阅读 · 0 评论