首页 > 其他 > 详细

点分治学习笔记

时间:2019-11-01 16:38:00      阅读:73      评论:0      收藏:0      [点我收藏+]

写在前面

先开个坑...

之前学过点分治,但是总是感觉打的时候内心莫名的慌,敲完几个函数的定义就开始脑袋一片空白。

所以重学了一下点分治,并写了这篇博客。

看看什么时候把它补完吧。


\(\mathrm{1}\) 参考资料

找了两篇还不错的博客

https://www.cnblogs.com/bztMinamoto/p/9489473.html

https://www.cnblogs.com/PinkRabbit/p/8593080.html


\(\mathrm{2}\) 点分治算法

\(\mathrm{2.1}\) 问题提出

考虑这样一个问题:给出一棵树,求有多少个点对 \((x,y)\) 满足它们之间的距离不超过 \(k\) / 等于 \(k\) / 大于 \(k\)

\(1 \le n \le 10^5\)

\(\mathrm{2.1.1}\) 暴力解法一

很显然,求两个点点对数目,可以枚举这两个点,然后求它们的距离。

时间复杂度 \(O(n^3)\) ,如果命题人给了这个复杂度超过 \(20pts\) 可真是良心。

\(\mathrm{2.1.2}\) 暴力解法二

可以枚举起点 \(x\) ,然后遍历这棵树,一旦距离超过 \(k\) 就返回。

如果是求大于 \(k\) 的,就先求出小于等于 \(k\) 的,然后容斥。

时间复杂度 \(O(n^2)\) ,正常的命题人应该会给到 \(30pts-60pts\)

\(\mathrm{2.1.3}\) 正解

点分治。

\(\mathrm{2.2}\) 点分治

点分治,顾名思义,是一种与点有关的分治算法。

点分治学习笔记

原文:https://www.cnblogs.com/liubainian/p/11777125.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!