whk 考试前写题解攒 rp 有用吗
仍然是讲讲想出来的过程。
首先,我们只需要关心一个联通块中有哪些点,而不用关心图的具体形态。
梦境原来就是回忆的足迹
现场做了,离散化数组没开 ll,被卡 au 线 → 卡线 ag。
因为代码是半个月前写的了,回忆做法时可能有点偏差,如果发现有误请联系我修改。😃
考虑怎么刻画题目所给条件。发现对于一个区间 [l,r],可以钦定其中一个卡牌 i,使得这张卡牌是第一张无法打出的牌。然后考虑它前面放什么牌,会发现前面会放所有 ai>bi 的牌。
==Ambiguous Encoding。orz Wu_ren。
直接选两个拼成的字符串不好刻画,考虑增量。定义一对合法的字符串 S,T 满足其中一个是另一个的前缀(这样才可能通过往后面加模式串变一样),每次往当前两个字符串中长度更短的后面塞一个模式串,使得一个字符串仍是另一个的前缀。
容易发现,任何时刻 ∣∣S∣−∣T∣∣≤m。所以此时可以考虑一个 dp:设 dpi,j 为当前更长的字符串最后的模式串编号为 i,∣∣S∣−∣T∣∣=j 的状态最少需要多长的字符串拼成。
详细化 pb 的题解。
感性理解一下,把大数字单独放在一个盒子里,好像总不是太亏。
算是第一次独立想出这样难度的题。
首先考虑手玩一下“变成整个序列的异或和”这个操作。发现如果一开始对 i 位置进行操作,记录一个值为原来所有的 ai 中,现在不在 a 中的 ai=x,则以后:
感觉也是很 well-known 了吧。
对于要求 ax>ay 这种,我们一般是考虑连 x→y 跑拓扑排序。但是这题要求一个点向一段区间或一段区间向一个点连边,怎么办?我们会优化建图。
由于是在树上,树剖+线段树优化建图常数可能偏大,考虑倍增(或称 ST 表)优化建图。由于上面的连边操作显然有可重复贡献性,每次对一条链 (u,v) 连边或从一条链 (u,v) 连出边,把这条链拆成 (u,x),(y,v) 两个长为 2k 且并集为 (u,v) 的链,找到 ST 表上对应点连边即可。