NOIP2024集训Day43 博弈论

NOIP2024集训Day43 博弈论

怎么说,这些题就是想得出来就想得出来,想不出来就是想不出来


A. [ABC261Ex] Game on Graph

假设图是一个有向无环图,那么直接 DAG 上 dp 即可。轮到 Alice 时在所有后继节点中取最小值,轮到 Bob 时在所有后继节点中取最大值。

考虑有环。有环的 min/max dp 的经典解法是跑最短路,把无后继的节点入堆,建反图,跑 Dijkstra 就好了。

但是这个 dp 有时候取最大值,有时候取最小值,感觉比较难处理。

如果轮到 Alice,直接取最小值。因为 Dijkstra 用小根堆,所以 Alice 的 dp 值直接跑 Dijkstra 是正确的。

如果轮到 Bob,则要所有的后继节点更新后,才可以更新 Bob 的值。而且他是希望在博弈中跑出死循环的,所以如果不是所有的后继节点都更新得到,他就不更新。我们可以使用类似拓扑的方式处理。记录入度,松弛时入度减一。


B. [AGC048D] Pocky Games

先说结论:A、B两人每次要么取一个,要么全部取完。

感性证明一下:

如果某一方对应的那堆石子大于其余的之和,那么其必胜,否则他会弃掉这堆去抢后面的。

但是如果直接弃掉的话可能会输,所以要先一个一个的拿来拖延对面的时间,等时机到了就全部丢掉。

于是有:设 fi,j,k 表示 [i,j] 内 A 先手,第 i 堆是 k 是否能获胜。

发现当 x 能获胜时,yxy 也能获胜,所以改成 fi,j 表示最小获胜的 aigi,j 反之。

考虑 A 的策略,假设求的是 fi,j

A 一开始会一个一个的丢,B 为了让 A 剩下的尽量少也会一个一个的丢,直到 aj=gi+1,j 之时,如果这时 B 继续丢,那么 A 可以直接丢掉 ai 然后 B 就输了。

所以 B 会在 aj=gi+1,j 的时候丢掉 aj,然后变成 fi,j1 的情况,如果这时 aifi,j1 就可以赢。

复杂度 Θ(Tn2)


F. 多边形之战

如果这个三角形三个顶点相邻,则先手必胜(第一刀就可以切)

否则当黑色三角形只有一边与白色三角形相邻时才可以被切,显然那个白色三角形是最后一个白色三角形

于是转化为:有 n 个石子,一次只能取一个,问取最后一个的人是谁

做完了。


G. [BZOJ2463 中山市选2009] 谁能赢呢?

先说结论:n 为偶数则 Alice,为奇数则 Bob。

证明:以 n 为奇数为例,去掉起始点还剩下偶数个点,一定存在一种方法能将剩下的偶数个点分成若干个 1×2 的长方形。

那么对于每一轮操作,只要先手能走即先手能找到一个 1×2 的长方形,那么后手就一定能从长方形的这一端走到那一端。

所以只要先手能走后手一定能走,后手必胜。

对于 n 为偶数的情况同理。


本文作者:Leirt_Abu

本文链接:https://www.cnblogs.com/Leirt/p/18447129

版权声明:本作品采用知识共享署名-非商业性使用-禁止演绎 2.5 中国大陆许可协议进行许可。

posted @   Leirt_Abu  阅读(12)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· 被坑几百块钱后,我竟然真的恢复了删除的微信聊天记录!
· 没有Manus邀请码?试试免邀请码的MGX或者开源的OpenManus吧
· 【自荐】一款简洁、开源的在线白板工具 Drawnix
· 园子的第一款AI主题卫衣上架——"HELLO! HOW CAN I ASSIST YOU TODAY
· Docker 太简单,K8s 太复杂?w7panel 让容器管理更轻松!
点击右上角即可分享
微信分享提示
评论
收藏
关注
推荐
深色
回顶
收起