CF388C Fox and Card Game

24-7-14-14

博弈论的题的核心在于双方都聪明且知道对方聪明

于是就有两个切入点

  1. 我一定选使对方最优决策最劣的方案 (过程向
  2. 如果存在界,打破界会变劣的一方一定会维护界。
    如果维护不了,就是必败界
    如果一定能维护,就是平衡界 (结果向

思考这题时陷入了第一点,看题解后wssb。
明明做过的博弈题九成九是结论题,还在那儿想过程,无语了。

考虑过通过第一点写个暴力找规律,可能有用
考场遇到这种情况一定不能犹豫

P2490 黑白棋

24.7.14.15

先考虑必败界,再dp一下就行

如果没理解错的话
有 k/2 堆棋子,每次可以在最多 d 堆中取走任意数量的棋子

记得 nim 好像有异或和为 0 的界?
还记得 d取 的问题有 d+1 的界?

这题不太能写暴力罢

仅有不超过 d 堆有多于0枚棋子时,直接秒
有且仅有 d+1的倍数 堆且都只剩1枚棋子,直接投
仅有不超过 d 堆有多于1枚棋子时,直接秒
有且仅有 d+1的倍数 堆且都只剩2枚棋子,直接投

应该是有 d+1 的界,难道依次判每个数是否在界上?

推不下去了

看题解
我真厉害,两个界糊一起就对了……所谓 k-nim

首先将各堆石子数用二进制表示。
令 𝑟_𝑖 表示每堆石子二进制表示的第 𝑖 位上数字之和 mod(𝑘+1) 的值。
如果有任意一个 𝑟_𝑖≠0,先手必胜;否则先手必败。

结论和证明都很好理解
思考时没分析第一个界,如果能想到二进制拆分,就能填补第二个界的漏洞

啊啊啊,dp部分自己想罢

堆数 m = k/2 <= 50, 棋子数上限 n-k <= 10000

总方案数 (n, k)

dp 是按二进制位考虑还是按堆数?

二进制位 棋子数? log((n-k)/(d+1)) * (k/2/(d+1)) * (n-k)
令 n = n - k, m = k / 2, d = d - 1
O( nm(logn-logd) / d )

d=1时复杂度最大,就是 普通nim
从这个复杂度来看的确应该分析一下 普通nim

复杂度算错了,但应该能过

P6902 Surveillance

24.7.21.2

看到倍增标签了,都没想出来……

个人思路是维护一个个区间对。但是这样信息难以标识和合并。

正解:把区间考虑成从左端点跳到右端点,倍增跳几次。

CF710F String Set Queries

24.7.21.3

如果没有强制在线,那么就直接秒了。

在强制在在线的情况下,可以考虑根号重构。但不是很想写。

删除可以直接取关。可以实现动态插入 ACAM 吗?

罢了,还是根号重构

直接最优解?那些 nlogn 做法的在干嘛

CF983E NN country

每次暴力找最值的肯定不行,容易想到可以倍增优化。 图上不会就想树,树上不会就想链。

P6651 Chain

这次是被标签中的容斥给误导了……或者说我对容斥的认识比较偏激?

显然是可以 2^k 容斥,但时间复杂度显然是不对的。

这里应当依次单独考虑每个点主导的贡献。

这里,认为一个不合法链被其上第一个被ban掉的点主导。自然想到以拓扑序的顺序计数。

f 为前方案数,g 为后方案数, h 为中方案数,f` 为前主导方案数, 则有

fu=fufvhv,uans=fuguf`_u = f_u - \sum{f`_v * h_{v,u}} \\ ans = \sum{f`_u * g_u}

计数方法一共就那么几种,一定要挨个尝试一遍。

CF1817C Similar Polynomials

tag:

  • 拉插

今天终于是把拉格朗日插值学了……

拉插的思路还是很好懂的。

不对,这到题的思路不在拉插上?

以后推柿子是要留心一下有枚举范围缩小的极限情况

这题对拉插的理解考察很有意思

P4139 上帝与集合的正确用法

推柿子
推不出来。考虑牛顿迭代

毛线哦,暴力打表找规律

好好好,又是奇怪定理,玩不起

扩展欧拉定理

AT_agc064_d Red and Blue Chips

tag:

  • 计数

遇到此类求本质不同结果的题,先考虑如何 check 一个结果序列合法。
— stntn

对排序后的数组计数是简单的。
— FstAutoMaton