PKUWC2025 Day1 T2

来抛砖引玉一波。

先声明:我的做法基于维护的数据结构不同是 O(nlog3(n+m)+mlog2(n+m)) 或者 O(nnlogn+mn)

我的思路大致就是:按照 x 从小到大处理所有询问。

pi 为当前 i 号点的 x 级祖先。

然后考虑如何维护区间内的不同的 pi 数目。一种方法是数颜色,另一种就是用 prei 表示所有和 i 相同深度的节点中,第 i 个位之前,上一个 p 的值等于 pi 的位置出现在哪。

容易注意到,这个东西的变化量是小常数 O(nlogn) 级别的,证明就是 DSU on Tree 的过程——即每次合并的过程中最多只会修改两个 prei 的值。

然后我们的模型就转化成了:

  • nlogn 次单点修改权值
  • m 次区间查询小于特定值的数个数

这个东西就是一个动态二维数点,等价于静态三维数点。

可以用 CDQ 分治解决,或者用分块。

分块做法的话似乎是 LOJ6278 的弱化版

posted @   徐子洋  阅读(89)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· 分享一个免费、快速、无限量使用的满血 DeepSeek R1 模型,支持深度思考和联网搜索!
· 使用C#创建一个MCP客户端
· 基于 Docker 搭建 FRP 内网穿透开源项目(很简单哒)
· ollama系列1:轻松3步本地部署deepseek,普通电脑可用
· 按钮权限的设计及实现
点击右上角即可分享
微信分享提示