摘要: 题目链接:HDU 3590【PP and QQ】 思路 树上删边问题,套个反尼姆博弈。 反尼姆博弈是取走最后一个石子的人输掉游戏,所以需要特判一些特殊情况。 1. 有堆的石子个数都是1,所以堆数为奇数时,先手必败,否则先手必胜 2. 所有堆中存在石子数为非1的堆时,若所有堆的异或和为0则,先手必败, 阅读全文
posted @ 2024-08-16 21:00 薛定谔的AC 阅读(1) 评论(0) 推荐(0) 编辑
摘要: 题目链接:HDU 2873【Bomb Game】 思路 数据范围较小,直接暴力求所有状态的SG值,然后将棋盘上所有炸弹的对应位置的SG值异或起来就可以得到当前局面的结果。对于相同位置的上有两个炸弹会自动爆炸,本来他们的SG值的异或和就为0,所以可以不用管。 代码 int n, m, vis[N * 阅读全文
posted @ 2024-08-16 15:45 薛定谔的AC 阅读(1) 评论(0) 推荐(0) 编辑
摘要: 题目链接:HDU 3980【Paint Chain】 思路 第一次操作,无论从哪个珠子开始染色,都会得到相同的长度为n - m的链,然后就是在这条链中取一段长度为m的珠子染色,当这一段珠子在链条中间的时候,就会把链条分成两段,就是一个简单的两段连续珠子的长度的sg值异或一下,求出sg[n - m]的 阅读全文
posted @ 2024-08-16 11:41 薛定谔的AC 阅读(2) 评论(0) 推荐(0) 编辑
摘要: 题目链接:HDU 2999【Stone Game, Why are you always there?】 思路 由于只能取连续的一段石子,当取出的石子是这段石子的中间一部分时就相当于将一段石子分成两段石子,简单异或一下求SG值就行了 代码 int sg[N], vis[N], a[N]; int n 阅读全文
posted @ 2024-08-16 10:52 薛定谔的AC 阅读(2) 评论(0) 推荐(0) 编辑