当前位置: 首页 > news >正文

洛谷 P5327

给定一棵大小为 \(n\) 的树和 \(m\) 条链 \(s_i, t_i\),询问有多少对 \((u, v)\) 满足 \(u, v\) 同时在一条链上?

\(n, m \le 10^5\)

一个十分暴力的做法:把一条链剖成 \(\log n\) 个区间,那么这 \(\log n\) 个区间两两都是有贡献的,得到 \(\log^2n\) 个矩形,每个矩形内的点对都是有贡献的。然后对 \(m \log ^2 n\) 个区间做矩形并即可,时间复杂度:\(O(m \log ^3n)\)

但是这个做法太暴力了,考虑只有一维还是拆成 \(\log n\) 个区间,另一维存若干条链(区间内的点和链上的点有贡献)。对于每个点 \(u\),它的贡献就是这若干条链的并,因为它们都经过点 \(u\),用个 set 维护下端点,按 dfs 序排序后求相邻两个点的距离,再除以 \(2\) 即可。(经典套路。)

时间复杂度是两个 log 的。

http://www.gsyq.cn/news/42177.html

相关文章:

  • 完整教程:mysql表的操作——mysql表的约束
  • 鸿蒙应用开发零基础入门:从工具到语言,轻松开启第一步
  • 通过重写组件轻松掌握用JSX写Vue项目
  • 洛谷 P3233
  • 组件理解
  • “模型法线到视图法线”的变换矩阵(normal matrix)的计算和作用
  • 去年夏天
  • aspose-pdf 修改pdf文件备忘录
  • 函数名与函数地址的关系(函数指针)
  • 别再选错!5分钟掌握AI Agent框架选型的方法
  • Linux - 7 磁盘管理篇
  • Markdown之Typora语法
  • markdown入门(复盘)
  • 卡尔算法哈希表
  • Rust 之二 各组件工具的源码、构建、配置、使用 - 教程
  • 新东方听力day2
  • 超级管理员目录索引的Google搜索技巧
  • 无限欢愉 深入推进 我沦陷在那片故地 我渴饮着 你的呼吸 却得不到 你的心
  • 基础架构
  • Word表格1.5倍行距居中问题
  • 详细介绍:后端_Redis 分布式锁实现指南
  • 日总结 23
  • [题解]P10277 [USACO24OPEN] Bessies Interview S
  • UE:论运行时动画录制的关键-正确获取骨骼数据与保存
  • 线性基相关
  • 低代码权限管理安全合规指南:守住数据安全的 “最后一道防线”
  • 2025-11-06
  • 关于waybar状态栏颜文字乱码问题
  • P10277 [USACO24OPEN] Bessies Interview S 题解
  • AI 时代的数据库进化论 —— 从向量到混合检索