长链剖分
romiqi_new
这个作者很懒,什么都没留下…
展开
-
[BZOJ3252][长链剖分]攻略
BZOJ3252 长链剖分之后把每条长链拿出来然后排个序选就完了 Code: #include<bits/stdc++.h> #define ll long long using 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 · 182 阅读 · 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 · 155 阅读 · 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 · 401 阅读 · 0 评论 -
[BZOJ3653][长链剖分]谈笑风生
BZOJ3653 我也不知道题面的引申意义 发现可以求出以每个点为p时的ans,讨论一下祖先和子孙的贡献,用长链剖分维护就好了 Code: #include<bits/stdc++.h> #define ll long long using namespace std; inline int read(){ int res=0,f=1;char ch=getchar(); whil...原创 2019-03-12 09:11:47 · 274 阅读 · 0 评论 -
[校内模拟][长链剖分][线段树]看门人
题意:求一棵树上每个点的子树中经过这个点的所有路径中边数在给定范围内的最长路径 早上8:05开考,8:10分看完题就秒了 然而有个地方没有开longlong 而且线段树维护长链的方向反了 所以连部分分都没了 裸的长链剖分,需要用线段树维护区间最大值,最好是zkw线段树(偷懒不想写) Code: #include<bits/stdc++.h> #define mod 998244353 ...原创 2019-09-11 16:12:37 · 149 阅读 · 0 评论