
长链剖分
romiqi_new
这个作者很懒,什么都没留下…
展开
-
[BZOJ3252][长链剖分]攻略
BZOJ3252长链剖分之后把每条长链拿出来然后排个序选就完了Code:#include<bits/stdc++.h>#define ll long longusing namespace std;inline int read(){ int res=0,f=1;char ch=getchar(); while(!isdigit(ch)) {if(ch=='-') f=...原创 2019-03-12 09:13:45 · 215 阅读 · 0 评论 -
[CF1009F][长链剖分]Dominant Indices
CF1009F长链剖分模板题定义f[i][j]为子树i中到i的距离为j的点的个数然后就是套路了长链剖分简单讲解:按照dep划分重儿子(称作长儿子有点奇怪)然后合并信息的时候先直接继承重儿子信息,然后暴力合并轻儿子信息因为一个点只会在一条长链中,一条长链只会被合并一次,所以是O(n)O(n)O(n)的空间开不下?动态分配内存Code:#include<bits/stdc+...原创 2019-03-01 17:21:38 · 187 阅读 · 0 评论 -
[COGS][长链剖分]秘术(天文密葬法)
没有传送门题意:你有一棵有n个点的树,每个点有两个权值ai,bi,请找出一条长为m的路径,使得ans=∑ai/∑bi最小,若没有长度为m的路径输出-1解法:明显的分数规划,二分后问题转化为求有没有一条长度为m的路径的权值和使∑ai−mid∗∑bi\sum{ai}-mid*\sum{bi}∑ai−mid∗∑bi≤0\le0≤0就可以长链剖分了Code:#include<bits/st...原创 2019-03-11 16:01:56 · 456 阅读 · 0 评论 -
[BZOJ3653][长链剖分]谈笑风生
BZOJ3653我也不知道题面的引申意义发现可以求出以每个点为p时的ans,讨论一下祖先和子孙的贡献,用长链剖分维护就好了Code:#include<bits/stdc++.h>#define ll long longusing namespace std;inline int read(){ int res=0,f=1;char ch=getchar(); whil...原创 2019-03-12 09:11:47 · 324 阅读 · 0 评论 -
[校内模拟][长链剖分][线段树]看门人
题意:求一棵树上每个点的子树中经过这个点的所有路径中边数在给定范围内的最长路径早上8:05开考,8:10分看完题就秒了然而有个地方没有开longlong而且线段树维护长链的方向反了所以连部分分都没了裸的长链剖分,需要用线段树维护区间最大值,最好是zkw线段树(偷懒不想写)Code:#include<bits/stdc++.h>#define mod 998244353...原创 2019-09-11 16:12:37 · 180 阅读 · 0 评论