E
发现 SG 很小,255以内,假如算出了 SG 数组,那 (n) 天就是 (n) 个序列做异或卷积,FWT 和 FFT 后的很像,可以直接加减乘,就可以做前缀和,然后 256n的去做。预处理 SG 的部分我sb了,本地直接跑用 (mu(x) = 1) 的转移跑 800ms,自定义测试也就 1200ms,2s 时限还是 TLE,导致我对算法瓶颈的预估出了问题,13:30 就写完了,到 16:10 加了一些奇奇怪怪的东西,强行开了 O3 才过。其实算 SG 的部分可以使用 bitset 优化,维护 256 个bitset,就可以把算 SG 降低到 (O(frac{100000^2}{w})) 。
B
对线段树每个节点,维护左儿子能选上的话,右儿子会产生的贡献,和bzoj某题思路是一样的,查询的时候如果能到左儿子,那就递归左儿子,然后直接加上右儿子,否则递归右儿子,所以之会递归一个儿子。区间翻转啥的维护标记就行了,我偷懒写了标记永久化。
比赛记录
zzs 过了 HIF
看了 A,感觉就算会 多项式,也需要 (O(n^4 2^n)) 就跑了
看了 E,搞了搞发现 SG 好像不大,就有了上文,中间没有队伍通过(最后就过了前3和我们),而且自己拿很烂的机器测也能过,一度以为主要是牛客的问题(但现在感觉牛客也有问题)
无奈去看 K,分析了下,发现只有一问我都想不明白,这时候(15:11)叫我去测核酸就先跑路了
去的路上让 zzs 帮我假了假 E,自己拿手机也改了改,无果
16:15 回来看到 zzs 说开 O3 E 就过了,无语,期间 bzy WA B 说自己调不动了
交流一下放弃 K, 我去看 bzy 的 B,看不懂,去问了下做法,悟了,还是看不懂,自己去写,拍+调了好久,赛后 1h 才过。