![](https://img-blog.csdnimg.cn/20201014180756757.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
————树
mengbi_er
一个蒟蒻JLoier
展开
-
bzoj4034: [HAOI2015]树上操作
链剖模板题,然而本辣鸡选手没写1LL调了好长时间。#include<iostream>#include<cstdio>#include<cstring>#include<algorithm>using namespace std;struct node{ int from; int to; int next;}edge[200005];struct segtr原创 2017-07-12 19:06:07 · 179 阅读 · 0 评论 -
bzoj3626: [LNOI2014]LCA
将询问离线,从1到n分别到根进行区间修改,答案为query(r+1)-query(l).#include<iostream>#include<cstdio>#include<cstring>#include<algorithm>#include<vector>using namespace std;vector<int> q[50005];inline int read(){原创 2017-07-12 19:15:09 · 167 阅读 · 0 评论 -
bzoj1832: [AHOI2008]聚会
满足条件的点一定在两点lca上,枚举三个lca即可。#include<iostream>#include<cstdio>#include<cstring>#include<algorithm>using namespace std;int read(){ char ch=getchar();int f=0; while(ch<'0'||ch>'9') ch=get原创 2017-07-04 22:17:36 · 248 阅读 · 0 评论 -
bzoj4242: 水壶
码了一上午,真是菜啊。 每个建筑都有一块占领区域,当两块区域相连,对两个建筑连长度为建筑到这个点到另一个建筑距离的边,求一遍最小生成树,之后每个询问就求倍增lca维护边权最大值就可以了。#include<iostream>#include<cstdio>#include<cstring>#include<algorithm>#include<queue>#include<vector>原创 2017-08-22 10:47:27 · 395 阅读 · 0 评论 -
bzoj3732: Network
求一边最小生成树就能保证两点之间边最小,然后lca搞搞就行了。#include<iostream>#include<cstdio>#include<cstring>#include<algorithm>using namespace std;int read(){ char ch=getchar();int f=0; while(ch<'0'||ch>'9')ch=get原创 2017-09-08 08:45:10 · 234 阅读 · 0 评论 -
bzoj3991: [SDOI2015]寻宝游戏
刚刚学会虚树,有空补个详解。 显然按照dfs序走是最优解法,答案就是相邻两个点距离+第一个和最后一个距离。这玩意写平衡树怕不是写死…于是就用上了从学oi以来只用过一次的set。。。#include<iostream>#include<cstdio>#include<cstring>#include<algorithm>#include<set>#define ll long longu原创 2017-11-23 22:31:13 · 215 阅读 · 0 评论