跨越国度
2014-03-20 23:05
176 查看
题意:
给你一颗带边权树 及每个点的颜色 和m个操作 每次操作更改一个的颜色 求每次操作后同色最近点对的距离
题解:
点分治 对于每个重心维护x个堆 x为这个重心管辖范围内的不同颜色数
维护该重心管辖范围内这个颜色的点到该重心的距离的小根堆
则某颜色经过这个重心的最小距离就是堆的前两个点的和
答案就是所有值的最小值
修改:
对一个点修改只会影响管辖范围包括它的log(n)个重心
每个重心维护堆log(n) 所以时间复杂度为O(nlog^2(n))
修改后可能影响答案 所以总的维护一个小根堆记答案即可
(官方解题报告还多建了好几个堆和一个线段树- - 简直麻烦 理论上我这样做是对的 但是我没打orz)
给你一颗带边权树 及每个点的颜色 和m个操作 每次操作更改一个的颜色 求每次操作后同色最近点对的距离
题解:
点分治 对于每个重心维护x个堆 x为这个重心管辖范围内的不同颜色数
维护该重心管辖范围内这个颜色的点到该重心的距离的小根堆
则某颜色经过这个重心的最小距离就是堆的前两个点的和
答案就是所有值的最小值
修改:
对一个点修改只会影响管辖范围包括它的log(n)个重心
每个重心维护堆log(n) 所以时间复杂度为O(nlog^2(n))
修改后可能影响答案 所以总的维护一个小根堆记答案即可
(官方解题报告还多建了好几个堆和一个线段树- - 简直麻烦 理论上我这样做是对的 但是我没打orz)
相关文章推荐
- 蓝桥杯 奇怪的比赛
- 如何重新配置Oracle的EM Database Control
- 嵌入式C/C++开发中的代码优化(翻译版)
- POI读取Excel(兼容Excel2003、Excel2007)
- 框架的contentDocument支持问题
- LeetCode | Unique Paths
- WebAppScaner
- ACM 做题过程中的一些小技巧。
- 攻下隔壁女生的路由器后,我都做了什么
- Linux C线程的创建和使用
- PreparedStatement的用法与SQL注入分析
- 第三周实验--简单的签到程序
- Spring多数据源的配置和使用
- 数据结构-红黑树扩张-区间树
- 第六章 指针与const
- 上帝都被中国程序员弄崩溃了
- 走进AOP In .NET
- 随机生成整数 然后对其排序(冒泡法)
- SqlHelper的详细应用方法,该怎么处理
- 攻下隔壁女生路由器后,我都做了些什么