
树链剖分
Nowed
把泪水种在心上,一定会开出勇敢的花。
展开
-
#圆方树# [ssloj1492] [bzoj 2125]迷宫花坛(garden)
Title Solution 注意会有重边,求disdisdis的时候注意要取最小值 此题数据较大,需要快读和快输,不然会TLETLETLE Code #include<cstdio> #define rr register #define ll long long #define rep(i,x,y) for(register ll i=x;i<=y;i++) using namespace std; const ll N=200011; const ll M=5000原创 2020-08-18 18:57:10 · 160 阅读 · 0 评论 -
#圆方树+树剖+tarjan# [luoguP5236] 【模板】静态仙人掌
Title https://www.luogu.com.cn/problem/P5236 Solution 在一棵树上,两点的距离等于dis[u]+dis[v]−2∗dis[lca(u,v)]dis[u]+dis[v]-2*dis[lca(u,v)]dis[u]+dis[v]−2∗dis[lca(u,v)] 然后对于仙人掌,把一个简单环改成一个方点(所有环上的点连向新点形成一个菊花图),顺便求出环里面的距离,剩下的点为圆点,建成一棵新的树。 lcalcalca的话,可以用树剖做。 Code #inclu原创 2020-08-17 21:59:00 · 234 阅读 · 0 评论 -
#树链剖分+线段树#[luogu P3178] [HAOI2015]树上操作
Title https://www.luogu.com.cn/problem/P3178 Code #include<cstdio> #define rr register #define ll long long using namespace std; const ll N=100011; const ll M=400011; ll n,m,Summ,R; ll seg[N],rev[M],size[N],son[N],top[N],dep[N]; ll num[N],fat原创 2020-08-09 19:45:35 · 163 阅读 · 0 评论 -
#树链剖分+线段树# [luogu P3384] 【模板】轻重链剖分
Title https://www.luogu.com.cn/problem/P3384 Solution 改了我好久啊,可能是我太菜了 大致思路就是 树链剖分后打个懒标记的线段树,在线段树上区间查询,区间加。 但是细节这种东西,真的难受,注意一下喽。 为了防止seg,rev,topseg,rev,topseg,rev,top等树链剖分中初始值的东西出锅,直接用下面的dfs2dfs2dfs2的做法,直接省去一半的细节了。 根据xjqxjqxjq的提醒,和经验告诉我们,线段树通常有两种打法,记住一种就原创 2020-08-07 15:54:59 · 241 阅读 · 1 评论 -
#树链剖分+线段树# [模板] [luoguP2590] [ZJOI2008]树的统计
Title https://www.luogu.com.cn/problem/P2590 Solution 板子题 Code #pragma GCC optimize("Ofast") #pragma GCC optimize("O3") #include<cstdio> #include<algorithm> #include<iostream> #include<cstring> #include<string> #define rr r原创 2020-08-02 21:56:20 · 168 阅读 · 0 评论