神·神·又·秘·秘。

20251028

早上

早上的四道题是 P4587、P10144/P10210、P11536、P3527/SP10264。

T4 满脑子是前不久刚听说的二进制警报器。别想歪了,这个 \(k\) 复杂度也不是很对。
对每个国家,二分 \(k\) 然后区间加是好想的。
现在是问每一个国家,所以……可以……整体二分!哈哈哈哈。
【可持久化线段树也是可以的,但是本题特地卡空间。】
在这里拜谢 Sam_Yang 大巨佬让我避开了一点点整体二分的坑点,比如不要暴力清空任何东西,换句话说,一定要保证所有 O(n) 的操作只进行 \(\log(n)\) 次。
这辈子第一次写整体二分_哈哈哈。

T1 注意到如果大小在 \([0,k]\) 的数字的总和为 \(x\),那么我们可以把值域拓展到 \([0,k+x]\)
然后可以暴力加。因为经过证明,次数是 \(\log\) 级别的。
真有意思。

T2 是恶心大分讨。我直接往平均数的方向想了 qwq。
T3 很神奇,是线段树的合并标记。【下文中会提到另一个合并标记。】这个故事告诉我们线段树是真香啊。
以及不要看到什么都想莫队等暴力算法【@Sexy_Foxy】。

下午

P4211,P14322,P11471。

T1 之前做过但又想歪了。可以转化成先对 \(1\sim x\) 的链 \(+1\),然后求 \(1\sim y\) 的链上的数总和。
T2 似乎好像没……完全搞懂。
T3 就是一坨【不是说题不好,但是你就说那么多“串串”是不是一坨】。首先由于是“分割”式的匹配,因此可以贪心地分割(能匹配到就分割)。然后用哈希来匹配,一直蜿蜒到子树就好了。最后由于 \(\sum m_i \le 10^5\),因此 \(m_i\) 种类为 \(\sqrt n\) 级别(AMAZING!),可以对每种长度都来一遍。

晚上

晚上讲了三道树的直径。
三道题分别是 P8934、CF1192B、P11956。
你以为真的只是树的直径吗?非也。
有一个东西叫做什么“生成图的最大生成树”。对于每个点 \((i,j)\),它们俩在生成图上有一条长为 \(dis(i,j)\) 的边,其中这个 \(dis(i,j)\) 指的是它俩在树上的距离。
根据性质“一点到其它点的最远距离一定是它到直径两端点的距离的 \(\max\)”,我们知道一定会选一条直径,然后其它点和直径的两个点中的一个连接。
于是就变成了下面的样子:

于是这玩意就和树的直径扯上关系了。

关于树的直径不止有扫两遍和树型 DP 两种求法。
第一它可以作为一种可合并信息放到线段树上。
这很神奇。
此时 TA 的定义已经变为 \(\max_{i,j} dis(i,j)\),就是说,线段树上,一个区间,取区间内两个点使得它们 \(dis\) 最大。
这是可以合并的,取两个点集的直径的两个端点,\(C_4^2\) 看哪两个点距离最远就好了。
(这是说的 T2。)
第二可以维护直径的中点。
这更神奇。根据性质“若一棵树有多条直径,那么它们的中点都相同”,我们知道一棵树的直径们的中点是唯一的。
于是当直径可能被神秘地拓展也好,移动端点也好的时候,可以维护中点的移动。
那这就好办了,沿着移动的边切成“子树内”和“子树外”,区间加减就好了。
(这是说的 T3。)

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/949422.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!