树链剖分
文章平均质量分 81
nlj1999
这个作者很懒,什么都没留下…
展开
-
树链剖分 POJ3237
树链剖分对于静态树的点权或边权的修改查询问题,都可以用轻重链剖分解决 有关树上询问的问题可以参考Orz杨哲神犇 模板题:POJ3237 个人代码:#include<iostream>#include<cstdio>#include<cstring>#define lc o<<1#define rc o<<1|1using namespace std;const int N=1000原创 2015-12-09 08:32:01 · 338 阅读 · 0 评论 -
BZOJ 4539: [Hnoi2016]树
md强行凑数据结构题,树剖+主席树,各种函数搞一大堆查询,然后其实就是求两点的lca。。。。#include#include#includeusing namespace std;const int N=100000+5;#define rep(i,l,r) for(int i=l;i<=r;i++)typedef long long ll;ll read(){ char ch原创 2016-04-19 11:51:28 · 534 阅读 · 0 评论 -
BZOJ 4538: [Hnoi2016]网络
感觉考试的时候智商约等于0 QAQ直接把链剖出来的区间取反再更新就好了#include#include#include#include#includeusing namespace std;const int N=200000+5;#define rep(i,l,r) for(int i=l;i<=r;i++)typedef priority_queue heap;str原创 2016-04-19 09:07:20 · 644 阅读 · 0 评论 -
COGS 1834. [国家集训队2011]采矿
人类互相伤害的典型题目首先显然两个分组背包是可以合并的所以我们可以用线段树维护一段区间的背包解于是就变成了树剖了#include#include#include#includeusing namespace std;#define rep(i,l,r) for(int i=l;i<=r;i++)#define per(i,r,l) for(int i=r;i>=l;i-原创 2016-04-30 08:13:20 · 358 阅读 · 0 评论 -
BZOJ 3572: [Hnoi2014]世界树
好久没有做虚树了,感觉好虚啊首先建出虚树,然后对于两边dp搞出虚树上每个点连接到的居委会对于虚树上的每条边,我们找到两端点的分界点,再对他们连接到的居委会更新答案这里给树剖加个特技就能求两点间第K个点了#include#include#include#includeusing namespace std;const int N=300000+5;const int in原创 2016-04-11 11:42:04 · 337 阅读 · 0 评论 -
BZOJ 4012: [HNOI2015]开店
这叫啥?可持久化树链剖分?首先忽略掉那个年龄的限制那就是求所有点到某点的路径之和这个画个图会发现是 Σdepth[i]+n*depth[u]-2*Σdepth(lca(u,i))前两个可以O(1)求,最后那个可以用树剖求。方法就是每个点到根的路径测度+1,这个可以用线段树更新,然后u到根的路径上的测度与长度之积的和就是答案了。但是出现了那个可恶的限制不过嘛,我们有传说中原创 2016-04-13 19:51:05 · 496 阅读 · 0 评论 -
BZOJ 3672: [Noi2014]购票
近年来的趋势都是把动态规划出成计算几何吗?这题首先我们有个n^2的动规设v为u的祖先f[u]=min{f[v]+(d[u]-d[v])*p[u]+q[u]}且d[u]-d[v]~~~~~我要变形了~~~~~~f[u]=min{-d[v]*p[u]+f[v]}+d[u]*p[u]+q[u]哎,前面这个好像什么东西啊y=kx+b于是我们发现u的祖先是好多线假设p[u]为原创 2016-04-04 20:28:25 · 689 阅读 · 0 评论 -
bzoj 1969: [Ahoi2005]LANE 航线规划
好久不写图论题好虚啊,m打成n RE了3次QAQ人生耻辱啊。首先假设没有删边,显然答案是两点间桥的数量。于是求边双连通分量,缩点缩边,只留下桥。所以剩下的肯定是树啦。于是询问变成了求树上两点间距离,求下LCA就可以直接做了。但是还有删边操作。删边肯定不好处理。反过来改成加边操作。两点与LCA形成了一个边双联通分量,于是把他们缩起来。直接缩不可取,考虑缩点的后果是原创 2016-03-15 10:08:39 · 972 阅读 · 0 评论 -
Query on a tree II
终于用树链剖分水掉了这题,LCA这种东西,树剖能做到O(N)预处理,O(logN)查询,所以果断不用倍增(每次都写错TAT)。数据貌似很坑爹的样子,第一次WA了,目测有o-th的情况,于是加了个特判,过了,0.06S好纠结以后LCA用什么做啊。原创 2015-12-19 09:20:05 · 266 阅读 · 0 评论 -
SPOJ375 QTREE - Query on a tree
果然不在状态,树剖都写跪了。。。。。。。。RE了三次,又是多组数据忘了什么该初始化的。WA了一次,忘了每个点代表它与它父亲连线的边权。我这拙计的智商啊。。。。。#include#include#include#define lc o<<1#define rc o<<1|1using namespace std;const int N=10000+5;const int原创 2015-12-16 20:49:46 · 327 阅读 · 0 评论 -
BZOJ 4515: [Sdoi2016]游戏
树链剖分将每次更新拆成若干条链上关于depth的一次函数于是就变成了线段树维护半平面交中x轴上一段区间的y最小值考虑每个点代表一条覆盖整个区间的直线,以此来进行标记永久化若两个标记,即两条直线覆盖了同一区间Case 1:其中一个标记处处比另一个优,那么显然取优的那个Case 2:在该区间中有交点,于是取更优区间较大的那个为此区间的标记,另一个递归到相应的区间去继续更新由原创 2016-05-18 19:49:54 · 591 阅读 · 0 评论