![](https://img-blog.csdnimg.cn/20201014180756922.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
树形结构/生成树
jzq233jzq
这个作者很懒,什么都没留下…
展开
-
主席树维护dfs序——BZOJ3653/Luogu3899 谈笑风生
题面:BZOJ3653 Luogu3899 被luogu难度等级骗了。。。 首先看到子树的题就是dfs序了,我们用L[i]L[i]表示i的初访问戳,R[i]R[i]表示i的末访问戳 我们设size[i]size[i]表示子树大小(不包括i),deep[i]deep[i]表示深度 首先我们可以发现a,b,c在一条链上,所以我们考虑这几种情况:b是a的祖先,根据乘法原理我们可以得到答案是siz原创 2017-08-18 11:09:12 · 297 阅读 · 0 评论 -
最大生成树+树链剖分——Luogu1967 [NOIP2013]货车运输
题面:Luogu1967 乍一看,网络流水题? 不存在的,有多组询问+起始点和终止点各不相同。。。 那不能用网络流还能用什么? 我们可以发现,题目所要求的那条路径一定在当前连通块的最大生成树上 这是一定的,否则找不到更大的一条路径里边的最小值比这条更大 所以就很容易想到Kruskal求出最大生成森林(图不一定连通)之后在树上进行操作了 具体什么操作呢?就是找两点间在树上路径的最小值即可原创 2017-06-02 20:27:22 · 386 阅读 · 0 评论 -
倍增+树状数组——BZOJ4551 [Tjoi2016&Heoi2016]树
题面:BZOJ4551 这题在线最优复杂度O(nlogn)O(nlogn),离线则是O(nα)O(nα),具体做法网上都有 然而我有一个神奇的O(nlog2n)O(nlog^2n)的想法 其实和在线线段树差不多 如果有一个点被标记,我们把这棵子树的权值全部+1 然后查询的时候向上找到最上面的权值和这个点相同的点 倍增一下就好了 我大概是石乐至了QAQ#include <cstdio>原创 2017-12-15 15:49:43 · 463 阅读 · 0 评论 -
缩点+树上差分——Codeforces555E Case of Computer Network
题面:cf555e 简要题意:给出一个无向图,给出q个询问S,T表示从S走到T。问能否给这张图的边定向,使得满足q个询问我们首先发现对于每一个边双连通分量,两两之间是可以随便到达的,包括去到外面的点。所以我们把边双都缩成一个点,这张图就变成了一棵树 对于树进行操作就简单多了,我们只要在S,T,LCA位置打上差分标记(S打向上,T打向下,LCA打消除),然后一遍dfs从下往上扫一遍,如果某个节点向原创 2017-10-21 07:44:04 · 382 阅读 · 0 评论 -
最长链——HDU4607 Park Visit
http://acm.hdu.edu.cn/showproblem.php?pid=4607题目意思是在公园里(就是一棵树)遍历k个点所需最短路径。这题用最长链做,可以选择两种方法: 1.一遍DFS(原谅本蒟蒻不会用这种方法写) 2.两遍BFS(本题用此方法)我呢是先离线用BFS把树中的最长链求出来,那好,问题来了,为什么要求原创 2017-01-22 10:28:36 · 354 阅读 · 0 评论 -
MST——poj1258 Agri-Net
http://poj.org/problem?id=1258本题似乎是一个很裸的最小生成树,加上多组数据。按照题目输入,这题用prim代码复杂度会低很多,因为输入就是一个现成邻接矩阵而我就写了一个kruscalkruscal基于贪心思想,将所有边按边权从小到大排序,然后一条一条加入,一开始各点在不同集合里,每加入一条边判断:如果当前边两个端点不在同一个集合里,合并集合并累加原创 2017-02-09 09:14:12 · 321 阅读 · 0 评论 -
MST——BZOJ1016 [JSOI2008]最小生成树计数
http://www.lydsy.com/JudgeOnline/problem.php?id=1016 我们来分析一下这个最小生成树 如果两颗最小生成树中至少有一条边不同,则这两个最小生成树就是不同的 因为说相同边权的边的编号不影响最小生成树的大小,这个我们就可以算进多个答案了 所以我们可以先把边排序,跑一遍Kruskal记录一下相同边权的边对答案产生影响的数目还有起始终止位置(排序后)原创 2017-03-31 09:08:44 · 340 阅读 · 1 评论 -
树——BZOJ2435/Luogu1052 [Noi2011]道路修建
题面:BZOJ2435 Luogu2052 当时NOI选手应该都水过了吧。。。 我们把这棵树给建出来之后记录一下每个点的子树大小 然后观察每条边 可以发现这条边分开的国家数目加起来显然是总数,所以只要找一下两个顶点的子树大小的较小值,这肯定是某一边的国家数目 那么另一边只要总数减一下就好了 水……不过有坑点就是要开long long否则20分#include<cstdio>#inclu原创 2017-05-16 13:17:58 · 307 阅读 · 0 评论 -
树形DP——Luogu2014 选课
题面:传送门 首先显然的这个树形结构的东西是一个森林 我们随便搞一个超级汇点变成一棵树好了 然后问题来了,这棵树是多叉树…… 我想的状态是这样的:f[i][j]表示在以i节点为根的子树内取j个(符合题意)的最大值 转移的时候把子树内的转移到这棵子树的根即可,只不过这个根必选 可惜的是如果按照多叉树来转移的话转移会很麻烦。。。 所以只能多叉转二叉了,也就是说左儿子右兄弟 然后就可以用上原创 2017-05-16 15:45:38 · 518 阅读 · 0 评论 -
LCT——BZOJ2049/Luogu2147 [SDOI2008]Cave 洞穴勘测
题面:BZOJ2049 Luogu2147 LCT入门纪念! 关于Link-Cut-Tree的简单操作,我们结合这题来简要说一下LCT是什么?link-cut trees 是把树分解成多个树链,并且把每条树链都分别储存到一颗深度为关键字的 splay 中。当 我们需要对一颗树上的路径进行操作的时候,利用 splay 进行分离与合并,把这条树上的路 径储存到同一棵 splay 中,然后再操作这原创 2017-05-19 09:42:32 · 230 阅读 · 0 评论 -
LCT——BZOJ3669/Luogu2387 [Noi2014]魔法森林
题面:BZOJ3669 Luogu2387 LCT维护动态最小生成树 具体怎么操作呢,如果当前加边后树中形成了环,那么就把环上边权最大的边删掉,再把这条边加进去(当然啦如果这条边比环里的边都大就不要加) 这就是维护动态最小生成树,这些操作都可以用LCT来解决 LCT维护边权最大值(只不过维护的时候要记录的是编号) 然后最后答案的话在每次操作之后都询问一下从1到n的最大边权 这个也只要直接原创 2017-05-22 21:39:38 · 242 阅读 · 0 评论 -
贪心——BZOJ4813/Luogu3698 [CQOI2017]小Q的棋盘
题面:BZOJ4813 Luogu3698一个很好想的贪心注意到这个图是一棵树,所以我们可以直接往树的深度最深处一直下去(注意是不回来了的),这样可以保证浪费是最少的 然后呢如果沿着这条链一直下去把n的步数用完了,那点数就是m+1(还有根节点) 如果没用完(这条路径到头了但是还有剩余步数),那就把剩余的步数全部除以2(一条路径走两次,为什么自己yy),加上原来答案就可以了 这样生成的答案它原创 2017-05-25 07:58:43 · 659 阅读 · 1 评论 -
树分块——BZOJ1086/Luogu2325 [SCOI2005]王室联邦
题面:BZOJ1086 Luogu2325 树分块模板题? 很懵逼我这个算不算树分块QAQ,暂且当它是吧到时候学树上莫队的时候再说 因为题目要求随便一组即可,所以我们可以考虑一下贪心 当子树大小超过B的时候单独作为一个省,子树根为省会(没算在那个省里),然后清空一下当前的子树大小 然后最后会剩下这么点城市,这些城市大小必定 < B(显然,否则也被分进另外一个省了) 于是把这一小部分分进相原创 2017-06-02 10:47:41 · 338 阅读 · 0 评论 -
哈夫曼+堆——UOJ#130/Luogu2168 [NOI2015]荷马史诗
题面:Luogu2168 UOJ#130 追逐影子的人,自己就是影子。 ——荷马这题其实就是一个k叉Huffman树 所以我们用堆维护即可(像合并果子一样做就好了) 不过合并果子可以看作二叉Huffman,这里k叉 没关系,每次选k个合并就好了啊 但是如果(n-1)%(k-1)不等于0的话,那是不可能完全合并掉的 那也没关系,我们把少的用0补上,那就没有问题了 于是这么一道NOI的题就原创 2017-07-08 08:21:35 · 239 阅读 · 0 评论 -
连通块——BZOJ4874 筐子放球
题面:BZOJ4874前天上午ZJOI2017集训讲课的妹子的第一题~ 看看很难的样子。。。 其实呢,把筐子看成点,球当边 然后求一下连通块,含奇数条边的连通块个数即为答案 为什么呢,看这个吧 ——课件里的 对就是这样#include<bits/stdc++.h>using namespace std;int nedge=0,p[400001],nex[400001],head[400001原创 2017-04-29 08:46:37 · 736 阅读 · 0 评论 -
LCA+二分+树上差分——Luogu2680 [NOIP2015]运输计划
题面:luogu2680 真受不了。。。这么多人AC的一道题目又花了我一个晚上时间做QAQ 所以这种题目就是近年来NOIP压轴题(也不一定是压轴题)的命题趋势? 13年的货车运输,15年的运输计划,16年的天天爱跑步,所以17年会是啥? 如果是这样,NOIP考场上这种题我还能在考试时间内切掉么?简要思路: 首先我们肯定要求的给出的计划的LCA和距离啦(这个随便你怎么求) 接下来我们二原创 2017-10-03 22:49:15 · 252 阅读 · 0 评论