博弈论(取石子游戏)dp+分析

题目描述
给定一个有 NN 个节点的有向无环图,图中某些节点上有棋子,两名玩家交替移动棋子。

玩家每一步可将任意一颗棋子沿一条有向边移动到另一个点,无法移动者输掉游戏。

对于给定的图和棋子初始位置,双方都会采取最优的行动,询问先手必胜还是先手必败。

输入格式
第一行,三个整数 N,M,KN,M,K,NN 表示图中节点总数,MM 表示图中边的条数,KK 表示棋子的个数。

接下来 M 行,每行两个整数 X,YX,Y 表示有一条边从点 XX 出发指向点 YY。

接下来一行,KK 个空格间隔的整数,表示初始时,棋子所在的节点编号。

节点编号从 11 到 NN。

输出格式
若先手胜,输出 win,否则输出 lose。

数据范围
1≤N≤2000,1≤N≤2000,
1≤M≤6000,1≤M≤6000,
1≤K≤N1≤K≤N
输入样例:
6 8 4
2 1
2 4
1 4
1 5
4 5
1 3
3 5
3 6
1 2 4 6
输出样例:
win
这题咋没人写题解嘞 qwqqwq
SG 函数
首先定义 mexmex 函数,这是施加于一个集合的函数,返回最小的不属于这个集合的非负整数
例:mex({1,2})=0,mex({0,1})=2,mex({0,1,2,4})=3mex({1,2})=0,mex({0,1})=2,mex({0,1,2,4})=3
在一张有向无环图中,对于每个点 uu,设其所有能到的点的 SGSG 函数值集合为集合 AA,那么 uu 的 SGSG 函数值为 mex(A)mex(A),记做 SG(u)=mex(A)SG(u)=mex(A)
例图:

例图解释:

SG(5)=mex({∅})=0SG(5)=mex({∅})=0
SG(3)=mex({SG(5)})=mex({0})=1SG(3)=mex({SG(5)})=mex({0})=1
SG(4)=mex({SG(5),SG(3)})=mex({0,1})=2SG(4)=mex({SG(5),SG(3)})=mex({0,1})=2
SG(2)=mex({SG(3)}=mex({1})=0SG(2)=mex({SG(3)}=mex({1})=0
SG(1)=mex({SG(2),SG(4)})=mex({0,2})=1SG(1)=mex({SG(2),SG(4)})=mex({0,2})=1
那么 SGSG 函数的定义说完了,这题和 SGSG 函数又有什么关系呢?
下面先说本题做法,再证明该方法正确性。

做法:求出每个棋子所在的点的 SGSG 函数值,将所有值异或起来。若异或值不为 00,则输出win,否则输出lose

证明:
首先,由于这是一张有向无环图,所以游戏最后一定会结束,也就是说每个棋子最后都会移动到一个点上,且该点没有任何能到达的点。
那么根据定义,结束状态的所有点的 SGSG 函数值异或起来为 00,做法对于结束状态可行。
所以接下来,只要证明出

任何一种每个棋子所在点的 SGSG 函数值异或起来非 00 的情况,一定能通过一次移动棋子,到达一个 每个棋子所在点的 SGSG 函数值异或起来为 00 的情况
任何一种每个棋子所在点的 SGSG 函数值异或起来为 00 的情况,一定不能通过一次移动棋子,到达一个每个棋子所在点的 SGSG 函数值异或起来为 00 的情况
那么做法就是对的

证明 1:
设每个棋子所在点的 SGSG 函数值分别为 a1,a2,⋯,ana1,a2,⋯,an
设 x=a1 XOR a2 XOR ⋯ XOR anx=a1 XOR a2 XOR ⋯ XOR an,设 xx 的最高位为第 kk 位,那么在 a1,a2,⋯,ana1,a2,⋯,an 中,一定有一个值的第 kk 位为 11
设该值为 aiai,那么由于 xx 的第 kk 位和 aiai 的第 kk 位都是 11,且第 kk 位是 xx 的最高位,所以 ai XOR xai XOR x 一定小于 aiai
又因为 aiai 是其中一个棋子所在点的 SGSG 函数值,那么根据 SGSG 函数值的定义,该点能到达的所有点中,一定存在一个点的 SGSG 函数值为 ai XOR xai XOR x
那么我们就可以将该点上的棋子,移到一个 SGSG 函数值为 ai XOR xai XOR x 的点上去
移完之

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值