点分治
seeeagull
这个作者很懒,什么都没留下…
展开
-
[cf150E] Freezing with Style(点分治+二分)
这个中位数显然可以通过二分来确定。检验的方法就是把边权大于等于检验值的设为1,小于的设为-1,看是否有一条路径边权和大于等于0。 关于长度的限制则可以用点分治。对于节点u,先把它的子节点按子树从小到大排序,保证复杂度,开个桶记录一下长度为d的边最大的权值bkt[d].w,以及其端点bkt[d].x,然后逐一合并。到子树v时,先dfs一下,求出子树内的不同长度下最大权值,用t1数组记录一下,然后对于t1内每个值,需要寻找一个滑动区间内的最大值,类似于单调队列的思路。若没有找到可行解则把t1合并到bkt中,再原创 2020-09-04 12:22:57 · 174 阅读 · 0 评论 -
[poj1741]Tree(点分治)
http://poj.org/problem?id=1741 点分治的模板题。似乎没什么好说的,用来熟悉一下板子吧。 #include<cstdio> #include<cstring> #include<algorithm> using namespace std; const int N=10010; struct edge{ int y,w,nex...原创 2019-01-22 20:12:44 · 127 阅读 · 0 评论