博弈论
timidcatt
永远不要放弃战斗
展开
-
B. 看比赛 The 10th Jimei University Programming Contest
思路:因为直走最短路,所以我们把所有在最短路上的边都要选出来,建成新图,为此,首先用dijkstra求出1到n的最短路的长度,然后我们从n开始bfs,遍历相邻边,如果这条边的边权加上1到这条边起点的最短路距离等于1到这条边终点的最短路距离,那么就把这条边加到新图中,最后就会形成一个包含1到n的所有最短路的DAG。原创 2023-10-26 19:48:50 · 270 阅读 · 3 评论 -
C. Salyg1n and the MEX Game Codeforces Round 897 (Div. 2)
思路:我们要让当前数组的MEX增大,必须放入MEX,然后B移除一个更小的数以后,MEX肯定会变小,所以我们必须把B去掉的数加回去来维持MEX,这样的话每回合操作的数越来越小,因为游戏规定B不能操作就直接游戏结束,所以如果在某一回合A放了一个0,那么当前游戏就结束了,也就是除了A的第一次操作以外,其他操作都只能维护原有的MEX。1原创 2023-09-12 11:10:38 · 907 阅读 · 0 评论 -
C. Battle 2023 (ICPC) Jiangxi Provincial Contest -- Official Contest
打出表发现如果p是奇数,那么当x为奇数时sg(x)=1,x为偶数时sg(x)=0,如果p是偶数,sg(x)会出现长度为p+1的循环节,x对p+1取模后,如果新的x是奇数,sg(x)=1,如果x=p,sg(x)=2,否则sg(x)=0。题目大意:有n堆石子,给出一个数p,A先B后,每个人每次只能取p的幂个石子(包括1)问A能不能赢。因为每堆石子都是相互独立的游戏,根据打表发现的规律求出每一堆石子的sg值然后求异或和即可。思路:先递归算出sg函数看看,sg(0)=0,sg(x)能转移的位置也就是sg(x-原创 2023-08-28 22:02:53 · 332 阅读 · 0 评论 -
Scheming Furry 2023牛客暑期多校训练营8 K
因为如果自己赢不了也不让对方赢,所以当min(n,m)>2时,除非先手第一步就能赢,否则在另一个人差一步排序好时,另一个人总有办法把顺序打乱不让他赢,所以没有解,当n=2的时候,A只能不停的交换唯一的这两行,那么主动权在B手里,B肯定不会让A赢的,又因为B是后手,所以要满足将列变为有序所需的操作数+将行变为有序的操作数是偶数才行,这样才能使的在他行动时正好能把矩阵变成递增,然后我们又发现无论他以怎样的顺序操作,所需要的操作次数的奇偶性是相同的,那么我们dfs一下置换环求最小操作次数即可。原创 2023-08-11 21:44:13 · 227 阅读 · 0 评论 -
Play on Tree hdu7286
题目大意:有一棵n个点的树,每次操作可以选择一个节点,并删除它的整棵子树,删掉根节点的人输,A后B先,A不知道哪个是根节点,问A赢得概率。原创 2023-07-26 16:07:44 · 155 阅读 · 0 评论 -
Alice Game hdu7287
题目大意:有n个石子放在一堆,每次操作可以选择拿走k个石子,然后将那一堆剩下的分成两堆,新堆不能为空,如果某一堆石子数小于等于k,可以直接拿完那一堆,不能操作的人输掉,A先B后问谁能赢。转载 2023-07-25 10:56:13 · 71 阅读 · 0 评论 -
2022CCPC广州 H. GameX gym104053H
思路:因为要找最小的没出现过的数,要使一个数成为最终的判定数,小于他的数必须都出现过,所以我们无论怎么放,都等价于从最小的数开始逐个往大放,我们从0开始遍历,对于没有在集合中的数,如果是偶数,那么A就直接放,这样的话B会放入下一个奇数,然后最终的判定数就是偶数,A赢,反之如果是奇数,那么B也要放入,使A放下一个偶数,这样最终判定数就是奇数,综上,A的最优策略就是放偶数,B的最优策略就是放奇数,我们从0开始遍历每个没在集合中的数,然后让AB进行他们所有的K个回合后,再重新遍历,看哪个数第一个没有出现。原创 2022-11-16 20:49:16 · 518 阅读 · 6 评论