随笔分类 -  博弈

摘要:A:留坑 B:二维sg函数,特判边界情况 E:签到 L:树链剖分裸题 // pragma GCC optimize(2) // pragma GCC optimize(3) // pragma GCC optimize(4) // pragma GCC optimize("unroll loops" 阅读全文
posted @ 2018-11-30 21:28 walfy 阅读(445) 评论(0) 推荐(0)
摘要:https://www.nowcoder.com/acm/contest/161/B 题意:两个人van游戏,n堆石子,每次只能取这堆石子数目的因子个数,没得取的人输,问第一个人的必胜策略有多少种 题解:sg函数,通过可取的石子数来打sg函数,然后枚举每一堆第一步取的石子数,sg函数异或起来看是不是 阅读全文
posted @ 2018-09-02 19:38 walfy 阅读(176) 评论(0) 推荐(0)
摘要:小明和小红经常玩一个博弈游戏。给定一个n×n的棋盘,一个石头被放在棋盘的左上角。他们轮流移动石头。每一回合,选手只能把石头向上,下,左,右四个方向移动一格,并且要求移动到的格子之前不能被访问过。谁不能移动石头了就算输。假如小明先移动石头,而且两个选手都以最优策略走步,问最后谁能赢? Input 输入 阅读全文
posted @ 2018-07-05 13:32 walfy 阅读(133) 评论(0) 推荐(0)
摘要:终于完成进度男人1/8,为了这题学了sam= = 题意先有一个串,n个子串,两个人轮流每次在子串上加字符,要求加完后还是原串的子串,最后不能加的就是输者,求赢的人 解法:sam之后在构造的状态图上跑sg函数,这题的sg状态不会超过26,所以直接枚举所有状态即可,然后记忆化搜索求sg函数,最后异或起来 阅读全文
posted @ 2018-04-01 11:36 walfy 阅读(286) 评论(0) 推荐(0)
摘要:题目:http://acmoj.shu.edu.cn/problem/418/ 素数筛一边,二维sg先预处理出sg值,然后O(1)查询 1必胜,2必败 #include<map> #include<set> #include<cmath> #include<queue> #include<stack 阅读全文
posted @ 2017-07-11 13:14 walfy 阅读(212) 评论(0) 推荐(0)
摘要:如果x>1&&y>1,可以简化到其中一个为1的情况,这是等价的,当其中一个为1(假设为x),另一个一定能执行y-1次, 这是一个贪心问题,把所有的执行次数加起来比较就能得到结论 #include<map> #include<set> #include<cmath> #include<queue> # 阅读全文
posted @ 2017-06-23 11:50 walfy 阅读(275) 评论(0) 推荐(0)
摘要:阶梯博弈原理参考:http://www.cnblogs.com/jiangjing/p/3849284.html 这题计算每两个之间的间隔就行了,如果是奇数个就把第一个前面的看作一个,偶数个就是两个点之间的间隔 m==1的时候特判,因为能一步就胜,m==2的情况第一个间隔要加1,因为当第一个间隔为0 阅读全文
posted @ 2017-06-23 10:21 walfy 阅读(184) 评论(0) 推荐(0)
摘要:先画一下N=2的情况,先手胜,再画一下N=3的情况,先手胜,所以大胆的猜测,无论N=多少,先手胜!! 这也能A真是个奇迹 #include<map> #include<set> #include<cmath> #include<queue> #include<stack> #include<vect 阅读全文
posted @ 2017-06-22 19:01 walfy 阅读(194) 评论(0) 推荐(0)
摘要:参考博客:http://blog.csdn.net/sun897949163/article/details/50609070 特判一下m=1的情况,然后m!=1时,无论对手取多少,我只要取的让这条链分成两个相同个数的子链就行了(之后按巴什博弈来处理),当然,如果先手能一次取完,那就后手必输 #in 阅读全文
posted @ 2017-06-22 18:24 walfy 阅读(178) 评论(0) 推荐(0)
摘要:和之前一道题是类似的,输出第一步走的方法,遍历数组找到a[i]^s<a[i]的那个数a[i]-a[i]^s就是要取的数 #include<map> #include<set> #include<cmath> #include<queue> #include<stack> #include<vecto 阅读全文
posted @ 2017-06-22 16:11 walfy 阅读(171) 评论(0) 推荐(0)
摘要:一眼就能看出来的巴什博弈,只是要输出第一步取的值,如果m>n+1,输出m%(n+1),否则输出m到n,因为这是第一步 #include<map> #include<set> #include<cmath> #include<queue> #include<stack> #include<vector 阅读全文
posted @ 2017-06-22 15:56 walfy 阅读(147) 评论(0) 推荐(0)
摘要:裸题,直接套公式 巴什游戏只是换了一个说法而已 #include<map> #include<set> #include<cmath> #include<queue> #include<stack> #include<vector> #include<cstdio> #include<cassert 阅读全文
posted @ 2017-06-22 15:32 walfy 阅读(151) 评论(0) 推荐(0)
摘要:挺像巴什博弈的,直接递推就能找到规律了,从2开始到9,s win,10到18,o win,18到162,s win,一直向下推进 #include<map> #include<set> #include<cmath> #include<queue> #include<stack> #include< 阅读全文
posted @ 2017-06-22 13:24 walfy 阅读(387) 评论(0) 推荐(0)
摘要:输的话输出0,赢就输出1并且输出第一步走后的数目 威佐夫博弈判断胜负 原理及常见题型求法: http://blog.csdn.net/y990041769/article/details/21694007 #include<map> #include<set> #include<cmath> #in 阅读全文
posted @ 2017-06-20 21:37 walfy 阅读(206) 评论(0) 推荐(0)
摘要:先打个表冷静一下 #include<map> #include<set> #include<cmath> #include<queue> #include<stack> #include<vector> #include<cstdio> #include<cassert> #include<ioma 阅读全文
posted @ 2017-06-17 17:38 walfy 阅读(133) 评论(0) 推荐(0)
摘要:又是找规律,无语了,说好的博弈呢,搞了半天的sg函数没有一点头绪 当n%(p+q)==0时,先手win,第一次取q个,以后每次,后手取k个,先手就取p+q-k个,最后,后手必取q个 当n=(p+q)*k+s(p<s<q)时,先手win,第一次取t(s-p<t<s)个,以后每次,后手取k个,先手就取p 阅读全文
posted @ 2017-06-08 14:49 walfy 阅读(234) 评论(0) 推荐(0)
摘要:刚开始想用sg函数做,想了半天没一点思路啊。 原来这是一个新题型,斐波那契博弈 斐波那契博弈模型:有一堆个数为 n 的石子,游戏双方轮流取石子,满足:1. 先手不能在第一次把所有的石子取完;2. 之后每次可以取的石子数介于1到对手刚取的石子数的2倍之间(包含1和对手刚取的石子数的2倍)。约定取走最后 阅读全文
posted @ 2017-06-08 13:49 walfy 阅读(225) 评论(0) 推荐(0)
摘要:刚开始因为没注意到f是从0开始的导致wa了几次,f遍历的时候从0到f【j】<=i 这个题只有一个子情况,求出sg值直接判断就好了 #include<map> #include<set> #include<cmath> #include<queue> #include<stack> #include< 阅读全文
posted @ 2017-06-08 12:53 walfy 阅读(201) 评论(0) 推荐(0)
摘要:就是要搞清楚nim博弈的原理 特别是证明方法,这一题就是第二条证明方法得出来的结论,只要a[i]^k<a[i]输出就行了 证明如下: 根据定义,证明一种判断position的性质的方法的正确性,只需证明三个命题: 1、这个判断将所有terminal position判为P-position;2、根据 阅读全文
posted @ 2017-06-07 19:46 walfy 阅读(141) 评论(0) 推荐(0)
摘要:#include<map> #include<set> #include<cmath> #include<queue> #include<stack> #include<vector> #include<cstdio> #include<cassert> #include<iomanip> #inc 阅读全文
posted @ 2017-06-07 17:04 walfy 阅读(270) 评论(1) 推荐(1)