摘要: 思路:动态点分治 提交:3次 错因:在加点的时候堆的操作错误。 题解: 为什么有时候说点分治是一种数据结构呢?我觉得是因为点分治的核心是在分治过程中产生的树形结构,即点分树,它的深度是 $\log$ 级别的。 对于这道题,我们首先要建立出来点分树(只记father),每个点维护所有孩子的答案。当修改 阅读全文
posted @ 2019-08-31 09:08 LuitaryiJack 阅读(166) 评论(0) 推荐(1) 编辑
摘要: 思路:最短路+点分治 提交:2次 错因:更新桶的时候没有重置,而直接加上了。 题解: 对于构建最短路树,我们可以先跑最短路,然后dfs一遍连边。 然后就是点分治了,还是一些桶,存点数为$x$的最长路径的条数。记得更新路径长度时桶要清零。 代码 cpp include include include 阅读全文
posted @ 2019-08-31 09:07 LuitaryiJack 阅读(203) 评论(0) 推荐(1) 编辑
摘要: 思路: 点分治 提交:5次 题解: 刚开始用排序+双指针写的,但是调了一晚上,总是有两个点过不了,第二天发现原因是排序时的$cmp$函数写错了:如果对于路径长度相同的,我们从小往大按边数排序,当双指针出现$==k$时,即我们应先左移右指针,否则答案可能会变劣(仔细想一想);若反着排序,应该先右移左指 阅读全文
posted @ 2019-08-31 09:06 LuitaryiJack 阅读(218) 评论(0) 推荐(1) 编辑
摘要: 思路:点分治 提交:1次 题解: 不需要什么容斥。。。接着板子题说: 还是基本思路:对于一颗子树,与之前的子树做贡献。 我们把路径的权值在$\%3$意义下分类,即开三个桶$c[0],c[1],c[2]$,分别记录每一类的路径条数。合并的时候显然有: $$c[0]\cdot mem[0]\cdot 2 阅读全文
posted @ 2019-08-31 09:05 LuitaryiJack 阅读(100) 评论(0) 推荐(1) 编辑
摘要: 思路:点分治 提交:1次 题解: 要求权值和$\leq K$ 的路径,我们可以类比 "点分治的模板" ,把长为$len$是否存在,改为$len$的路径的条数,并用用树状数组维护前缀和,这样就可以求出答案。 代码: cpp include define R register int using nam 阅读全文
posted @ 2019-08-31 09:04 LuitaryiJack 阅读(106) 评论(0) 推荐(1) 编辑