![](https://img-blog.csdnimg.cn/20201014180756926.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
博弈论
ylsoi
这个作者很懒,什么都没留下…
展开
-
[AGC02E]Candy Piles——博弈论SG函数
题目大意:有n堆糖果,每堆的数量为ai,两个个轮流吃糖果,每一次可以选择将最大的那一堆吃掉或者每一堆都吃一颗。吃掉最后一粒糖果的人会输。问是否先手必胜?思路:看样子好像没有地方入手,因为有一种操作是将每一堆都吃掉一颗。发现吃掉iii堆最大的糖果同时也每一堆吃一颗吃了jjj次和顺序并没有关系。于是我们可以建立一种模型,就是将糖果的数量从大到小排序之后,我们看成n个矩阵围成的封闭图形,我们...原创 2018-06-02 16:54:05 · 303 阅读 · 0 评论 -
[ural1397]Points Game——博弈+贪心
题目大意:给出平面2n点,有两个玩家游戏。每个回合,玩家A可以取走一个点,然后玩家B取走一个。经过n个回合没有点了,结束比赛。一个玩家的得分是他所取走的所有两两之间的欧几里得距离的和,得分最高者获胜。A和B都是聪明人,求两者分数之差为多少。思路:好像两边的和都不好计算,于是来补全一下式子使得一方为定值,假设A选的集合为A,B选的集合为B,全集为T。 ans=∑i,j∈A,i<j...原创 2018-08-05 21:00:53 · 237 阅读 · 0 评论 -
[AGC10D]Decrementing——数学分析+博弈
题目大意:有一串gcd为1序列,两个人轮流操作,每一次选择一个大于1的数字减一之后将序列中的每一个数除以整个序列的gcd,最后操作不了的人输,问是否先手必胜。 思路:显然输了的人的状态是全部都是1的,也就是∑ni=1(ai−1)∑i=1n(ai−1)\sum_{i=1}^{n}{(a_i-1)}为0,是一个偶数,先手要必胜的话要想办法让自己是奇数,这样最后的偶数的状态才会让别人拿到。...原创 2018-07-25 20:55:21 · 214 阅读 · 0 评论 -
[poj3710]Christmas Game——无向图删边游戏
题目大意:给定n个无向图,每个图的1号节点为根,两人每次轮流删去一条边,删去一条边之后和根不连通的部分去掉。(保证图中的环不互相嵌套,同时每一个环只和图有一个交点)删掉最后一条边的人获胜,问是否先手必胜。思路:我们可以单独处理出来每一个图的SG函数值。 首先我们要知道,如果这个图是一棵树要怎么做,一个定理就是,整棵树的SG函数的值等于各个子树的再加上根节点形成的子图的SG函数的异或和...原创 2018-06-09 19:42:32 · 454 阅读 · 0 评论 -
[ARC91F]Strange Nim——SG函数
题目大意:有nnn堆石子,每堆石子有aiaiai个,有一个数kikiki现在两个人博弈,每 个人每次至多可以拿走数量的为⌊xki⌋⌊xki⌋\lfloor \dfrac{x}{ki}\rfloor石子,xxx为当前这一堆石子的 数量,谁不能拿就输了,求谁赢。思路:这一看就是SG函数的题目,然后就不会做了。。。 我们固定了kkk的值为333后打表: 0 0 1 0 1 2 0 1...原创 2018-06-02 10:54:34 · 241 阅读 · 0 评论 -
[hdu1848]Fibonacci again and again——SG函数,SG定理入门
Description:任何一个大学生对菲波那契数列(Fibonacci numbers)应该都不会陌生,它是这样定义的: F(1)=1; F(2)=2; F(n)=F(n-1)+F(n-2)(n>=3); 所以,1,2,3,5,8,13……就是菲波那契数列。 在HDOJ上有不少相关的题目,比如1005 Fibonacci again就是曾经的浙江省赛题。 今天,又一个关于F...原创 2018-06-01 19:54:32 · 207 阅读 · 0 评论 -
[bzoj2066][Poi2004]Gra——阶梯博弈Nim
题目大意:有m 个格子排成一行,从左到右编号1 到m,其中n 个给定的格 子里有石子,且编号为m 的格子里没有石子。两个人轮流操作,每次操 作要求选择一个石子,石子会移动到它右边第一个不含石子的格子里。 将某个石子移动到编号为m 的格子的人胜利,问先手有多少种操作方案 能使先手必胜。思路:首先倒数第二个格子上肯定不可以有格子,有的话就赢了,所以这是必胜状态。所以两个人都不想把石...原创 2018-06-07 15:27:00 · 297 阅读 · 0 评论 -
[bzoj1022][SHOI2008]小约翰的游戏——anti-Nim
题目大意:拿到最后一个的人输,其余条件和和Nim游戏相同。思路:发现当所有的堆的个数都为1且为偶数个的时候先手必胜,即异或和为0。当仅存在一个大于1的堆得时候,我们可以先手调整成上面的状态的相反状态使得先手必胜。所以只要按照普通的Nim的策略去取,可以使得2状态总是在先手手中。所以条件为:不存在一堆石子大于1,且异或和===0。存在大于1的石子,且异或和≠0...原创 2018-06-06 13:20:20 · 192 阅读 · 0 评论 -
[bzoj1115][POI2009]石子游戏Kam——阶梯博弈Nim
题目大意:有N堆石子,除了第一堆外,每堆石子个数都不少于前一堆的石子个数。两人轮流操作每次操作可以从一堆石子中移走任意多石子,但是要保证操作后仍然满足初始时的条件谁没有石子可移时输掉游戏。问先手是否必胜。思路:发现移动一堆石子只可以在不小于前一堆石子的范围内移动,直接做还是不好做。转化一下模型,移动一堆石子相当于把和前一堆的石子转变成了和后一堆的差,即每一次对相邻两堆石子的差值做博弈。...原创 2018-06-06 11:48:09 · 222 阅读 · 0 评论 -
[bzoj3759]Hungergame——SG函数+线性基
题目大意:同样是Nim游戏,只不过每一堆石子需要解锁,解锁需要一次单独的操作,只有石子解锁了之后才可以拿。思路:我们可以从SG定理的原理的角度去看这道题目,同样地我们只计算目前解锁了的石子的状态(因为未解锁的我们无法判断)。为了保持先手必胜,我们需要让对方永远处于一种异或和为零的局面,这样我们才可以反转使得异或和不为0。但是对方可能会解锁一些石子然后使得异或和任然为0,所以作为先手一开...原创 2018-06-05 19:30:00 · 177 阅读 · 0 评论 -
[bzoj4035] 数组游戏——SG函数
题目大意:有一个长度为N的数组,甲乙两人在上面进行这样一个游戏:首先,数组上有一些格子是白的,有一些是黑的。然 后两人轮流进行操作。每次操作选择一个白色的格子,假设它的下标为x。接着,选择一个大小在1~n/x之间的整数 k,然后将下标为x、2x、…、kx的格子都进行颜色翻转。不能操作的人输。现在甲(先手)有一些询问。每次他 会给你一个数组的初始状态,你要求出对于这种初始状态他是否有必胜策...原创 2018-06-03 13:38:55 · 336 阅读 · 0 评论 -
[bzoj1188]分裂游戏——SG函数
题目大意:有n个碗里面装了ai粒糖果,然后每次一个人可以选择一组i<j≤ki<j≤kin−in−in-i的石子等你来取。 如果每一次只增加一个糖果的话就很好办了,但是是这是增加了两个糖果,相当于增加了又新加了一堆石子。换一个角度去想,新加的这一堆石子反正最后总是要取走的,转移后的状态便是后面两个糖果所构成的游戏的和。数据这么小,上SG就完事了。/*============...原创 2018-06-02 22:34:06 · 1084 阅读 · 0 评论 -
[atcoder caddi2018]D.Harlequin——博弈论
题目大意:给定n堆石子,每一次可以从不同的堆中取1个石子或者不取,求最后的谁获胜。思路:一种状态E全部都是偶数,另外一种状态O即存在奇数。不难发现最后的状态为E。如果拿到了E不论怎么操作都会变成O,如果拿到了O总有办法变成E,即先手必胜的状态为O,先手必败的状态为E。#include<bits/stdc++.h>#define REP(i,a,b) for(int i=...原创 2018-12-23 10:27:34 · 271 阅读 · 0 评论