1 HDU4812(树分治题目:求一颗树上的一条路径,其上所有点的值之积为k。思路:裸的树分治,写的时候感觉肯定能迅速过掉,,,,结果做了大半天。。。越来越觉得自己出数据的能力是极为重要的!!!/** @author: Cwind*////#pragma comment(linker, "/STA....
分类:
其他好文 时间:
2015-10-06 18:13:25
阅读次数:
290
给你一颗点上有字符的树,问一个给定的字符串是否是这棵树上的两点的路径。树分治的思想就是每次找重心,重心下的子问题分解去做,然后就是合并了。合并的时候用一个总的set> 去存从根节点往下走的长度以及对应的hash值,判的时候只需要看下是否已经存在 m-len,以及对应的前缀(或者后缀)的哈希值,然后再...
分类:
其他好文 时间:
2015-09-26 21:12:08
阅读次数:
278
题意:求一个动态区间的最大连续和。静态版本的O(n)算法显示不适用了,但是可以用线段树分治,因为一个连续和要在两边的区间,要么跨越两边,对于一个结点维护最大前缀和,后缀和,子区间连续和。题目要求输出区间,所以还要保存连续和最大的区间,以及前缀和,后缀和的位置。为了维护最大前缀和以及后缀和还需要一个区...
分类:
其他好文 时间:
2015-09-08 20:08:24
阅读次数:
296
题目:求一棵树上路径长度小于k的路径条数。思路:这是LTC的男人八题里比较简单的一道。首先如果不是树,而是链的话,我们 可以想到一种分治算法(当然链的情况不分治更快),就是对于一个中点,对答案有贡献的要么是跨越中点的路径,要么是两边的路径,那么每次从中点分开,进行 分治的话复杂度是O(nlogn),...
分类:
其他好文 时间:
2015-09-08 18:34:47
阅读次数:
215
对于一个点,要求出它到所有点的带权距离和,只需记录下树分治的结构然后查询即可。修改$O(\log n)$,查询$O(\log n)$。到所有点带权距离和最小的点显然是这棵树的带权重心。以1号点为根,考虑一条从父亲x到孩子y的边:若y子树内权值和>=总权值和-y子树内权值和,即2*y子树内权值和>=总...
分类:
其他好文 时间:
2015-09-03 00:41:12
阅读次数:
431
去网上搜题解大多数都是说论文,搜了论文看了看,写的确实挺好,直接复制过来。不过代码中有些细节还是要注意的,参考这篇http://blog.sina.com.cn/s/blog_6d5aa19a0100o73m.html一段设X为满足ii,那么i对答案的贡献为B[i]-i。显然,随着i的增大,B[i]...
分类:
其他好文 时间:
2015-09-01 21:25:14
阅读次数:
160
题意:
给出一颗n个结点的树,点上有权值;
求点对(x,y)满足x!=y且x到y的路径上最大值与最小值的差
n
题解:
来填一填当年挖下的坑;
这个数据范围真是恶意。。直接说五组数据不好吗!
考虑这题怎么做,在这场考试那天的前一天,我学习了树分治算法;
然后他就出了,然后我就写了,然后我就写不出来了;
当年的我实在naive;
我翻出了当时交上去的代码,改了好久好久。。...
分类:
移动开发 时间:
2015-08-28 17:35:07
阅读次数:
295
题意:求树上距离不超过k的点对数解决:很经典的树分治 1 //#include 2 #include 3 #include 4 #include 5 #include 6 7 const int MAXN = 10000+10; 8 9 struct Edge{ 10...
分类:
其他好文 时间:
2015-08-19 12:44:18
阅读次数:
93
WZJ的数据结构(负三十)难度级别:D; 运行时间限制:1000ms; 运行空间限制:262144KB; 代码长度限制:2000000B试题描述给你一棵N个点的无根树,点和边上均有权值。请你设计一个数据结构,回答M次操作。1 x v:对于树上的每一个节点y,如果将x、y在树上的距离记为d,那么将y节...
分类:
其他好文 时间:
2015-08-07 23:43:14
阅读次数:
189