
点分治真的玄学
文章平均质量分 66
stone41123
一名苦逼的OIer,欢迎交朋友。。。
展开
-
[bzoj1468]Tree(点分治)
传送门 点分治这个算法一开始学的时候真的觉得这就是玄学,因为按道理来说,这样递归应该是n2lognn^2logn的呀,为什么就是nlog2nnlog^2n呢?然后我就想到了树链剖分这个神奇的算法,想到了轻重链,忽然就明白了,因为点分治可以每次找重心,保证了递归层数不超过lognlogn层,感觉和树剖挺像的。 关于这个题,就是每次找重心,以重心为根dfs每个点到重心的距离,然后统计经过重心的路径,原创 2017-09-30 12:25:38 · 1018 阅读 · 0 评论 -
[bzoj2152]:聪聪可可(点分治)[洛谷P2634]
这是我的点分治第二题,居然自己写1A了!好开心!好开心!好开心! 题目传送门 和上一个题思路一样,每次找重心,统计经过重心的答案,然后再减去子树中的重复的路径,就是答案了。 关于统计,可以dfs子树中所有节点到根的距离,然后输出%3==0的,%3==1的,%3==2的,然后sum=cnt0∗cnt0+cnt1∗cnt2∗2sum=cnt0*cnt0+cnt1*cnt2*2,自己想一想,很好懂的原创 2017-09-30 18:41:36 · 900 阅读 · 0 评论 -
[bzoj1095][ZJOI2007]Hide 捉迷藏(动态点分治)
传送门 话说我明明是抄的po姐的代码,为什么我的23s,po姐的14s??? 看来我代码已经很接近颜值了。。 其实这题就是维护好多个堆,每个点两个,再来一个全局堆就好了。 具体还是看po姐的blog吧: http://blog.youkuaiyun.com/popoqqq/article/details/44461423 代码:#include<cstdio> #include<cstring> #原创 2017-10-25 22:37:16 · 330 阅读 · 0 评论