Examples

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。

有点难搞,暂时鸽了。

posted @ 2022-11-28 19:09  xiaoziyao  阅读(166)  评论(0)    收藏  举报