4.13 省选模拟赛 守卫 点分治 虚树

avatar
avatar

没脑子选手又来丢人了 写正解写不出来 暴力的特判也给写挂了。

看一眼题目范围 sumk<=500000 提示算法:虚树。

但是 考虑直接对原树做出来虚树 发现这样做需要换根dp求每个点能审查的最大范围。然后按边处理。

此时可以发现出现了问题 根本无法快速有效的查询x的父亲那边的点的数量 主席树不行 主席树+换根也是错误的。

自闭ing.考虑打暴力 对于nQ的暴力 直接换根dp一下。

对于ki==1的点 ??? 怎么不会做了..这种问题已经不能用简单的换根解决了。

考虑点分治 容易用树状数组维护 子集一减就好了 更容易的是 直接求出sum[k]表示距当前点分中心<=k的点的数量。

前者nlog^2 后者nlogn.

对于 是链的情况 不难想到区间覆盖性问题 可以直接排个序然后贪心求 写一个线段树也行。

这样就有50分了。

但是我上午执意写正解 写到自闭。

考虑100分 不难想到 点分树求答案 发现这样做需要预处理主席树 然后在每个点上查询 不过 重复的元素和距离的问题很难讨论清楚。

题解给了一种做法是 ki>1时 考虑建一棵虚树出来。按边处理。

怎么说 对于两个点 重合部分中间再建一个点 然后表示一下负贡献。

我不太能理解这一点 好毒瘤...

先咕了 放篇题解在这 LINK:Altria Pendragon 大佬的题解

自闭

猜你喜欢

转载自www.cnblogs.com/chdy/p/12701352.html