4 月 15 日记录

飞机趁机

又是邻域魔法题,根本不会一点。

注意到条件可以放缩。对每个点钦定离它最近的非关键点,显然如果算错只会把答案算小。一个点支配的点构成树上的一个连通块,连通块的个数可以在 dp 的时候处理。

成都七中

点分治水平太低了。

由于两个点属于同一个连通块可以转化为两点在树上的路径信息,故此考虑点分治。

设分治中心为 \(r\),在 \(r\) 这一层我们只处理跨过 \(r\) 的询问。

一个重要的观察是:所有能到达 \(r\) 的询问是等价的。所以我们只需要处理 \(r\) 的答案,这是一个经典的区间数颜色数问题,可以用扫描线树状数组解决。一个询问只会在第一次跨过分治中心两端的时候被处理一次,复杂度 \(O(n\log^2n+q\log n)\)

[ZJOI2019] 语言

对于一个 \(u\),考虑 \((u,v)\) 对的数量。考虑经过 \(u\) 的路径的端点构成集合 \(S_u\),那么只经过一条路径能到达的 \(v\) 的数量就是 \(S_u\) 构成的虚树大小,这等于把 \(S_u\) 中的点按照 DFS 序排序后相邻两点间的距离之和。把 \(S_u\) 插到线段树上维护,对路径差分,然后线段树合并即可。复杂度是优美的 \(O(n\log n)\)

posted @ 2025-04-15 19:49  Network_Error  阅读(18)  评论(0)    收藏  举报