2022-11-28 #1 即使到了要说再见的日子 回想这一切仍是如此悲哀
——COP《世末积雨云》
重新开始吧。
01 P4458 [BJOI2018]链上二次求和
拆式子就做完了,没啥意思。
02 P4428 [BJOI2018]二进制
一个简单的发现是 \(2^{2k}\bmod 1\pmod 3,2^{2k+1}\bmod 2\pmod3\)。
先考虑判定:将所有 \(1\) 堆在最低位,若偶数个即合法。否则该数模 \(3\) 余 \(1\),此时必须保证存在不少于 \(2\) 个 \(0,1\)(否则很容易说明无解),只需将 \(2^1\) 位置替换成 \(0\),并在最前面加入 \(10\) 即可。
求不合法肯定好做些:
- \(0\) 个数不超过 \(1\) 且 \(1\) 个数为奇数;
- \(0\) 个数 \(>1\) 且 \(1\) 个数为 \(1\)。
由于两者都有一维较少,我们可以直接在线段树上维护 \(O(1)\) 个信息来计算,具体地,可以维护“第一个 \(0\)”,最后一个 \(0\) 状物,奇数限制由于得知 \(0\) 个数也可推断。
03 P4459 [BJOI2018]双人猜数游戏
记搜题,没意思。
04 P7843 「C.E.L.U-03」布尔
只要计算出每个右端点最远能到多远的左端点,倍增就好了。
使用 uoj693 地铁规划 的方式很容易做到 1log 的复杂度。
当然 check 仍然不是很好实现,但是根据这题的加边方式 \((u,v),(u',v')\),我们可以直接判断 \((u,u')\) 是否连通,若不连通且有其他的点对连通,可以反证得到 \((u,u')\) 连通。
一个更加平民的做法是使用决策单调性的分治算法,做法是一样的。
05 P7842 「C.E.L.U-03」探险者笔记 III
\(i<j,w+sumB_{S_i}>sumB_{S_j}\) 使用 cdq 分治拆开,不能暴力枚举子集转移,折半做就好了。
06 P7841 「C.E.L.U-03」100%不公平的游戏
算算 SG 值,换根 dp。
有点难搞,暂时鸽了。

浙公网安备 33010602011771号