
图论
consult_
这个作者很懒,什么都没留下…
展开
专栏收录文章
- 默认排序
- 最新发布
- 最早发布
- 最多阅读
- 最少阅读
-
小K的疑惑 (树上思维)
小K的疑惑题目描述:众所周知,小K是一只连NOIP2018初赛都没有过的蒟蒻,所以小K很擅长dfs序+分块树,但是本题与dfs序+分块树无关。小K现在心态爆炸了,因为小K被一道简单的数据结构题给卡住了,希望请你来解决它,但是小K又不想太麻烦你,于是将题面进行了简化(其实是出题人懒得写题面了233333):Bob有????个点的树,每条边的长度有一个边权,现在定义????????????(????,????)代表第????个点到第????个点的距离模2之后的结果。问有多少(????,????,????原创 2020-08-05 13:55:18 · 260 阅读 · 0 评论 -
[SCOI2012]滑雪与时间胶囊 (最小生成树)
[SCOI2012]滑雪与时间胶囊题目描述:a180285非常喜欢滑雪。他来到一座雪山,这里分布着M条供滑行的轨道和N个轨道之间的交点(同时也是景点),而且每个景点都有一编号i(1 ≤ i ≤ N)和一高度Hi。a180285 能从景点i 滑到景点j 当且仅当存在一条i 和j 之间的边,且i 的高度不小于j。与其他滑雪爱好者不同,a180285喜欢用最短的滑行路径去访问尽量多的景点。如果仅仅访问一条路径上的景点,他会觉得数量太少。于是a180285拿出了他随身携带的时间胶囊。这是一种很神奇的药物,原创 2020-07-22 23:21:36 · 422 阅读 · 0 评论 -
D 树上求和 (dfs序 + 线段树)
D 树上求和题目描述:给你一棵根为1的有N个节点的树,以及Q次操作。每次操作诸如:1 x y:将节点 x 所在的子树的所有节点的权值加上 y2 x:询问 x 所在子树的所有节点的权值的平方和,答案模23333后输出思路:通过一次DFS后可以求得此树的DFS序 ,以及把这棵树转化为了一个一维数组,对节点 x 所在的的子树的所有节点的操作就转化为了,对此数组的[ ldf[x] ,rdf[x] ] 这个区间的操作,这就是DFS序的性质。那么接下来就可以用线段树来维护区间的操作了。线段树需要的功原创 2020-07-17 17:09:49 · 233 阅读 · 0 评论 -
强联通分量 和 双连通分量 (tarjan)
P2272 最大半连通子图题目描述一个有向图 G=(V,E) 称为半连通的 (Semi-Connected),如果满足:∀u,v∈V,满足 u→v 或 v→u,即对于图中任意两点 u,v,存在一条 u 到 v 的有向路径或者从 v 到 u 的有向路径。若 G′=(V′,E′) 满足,E′ 是 E 中所有和 V′ 有关的边,则称 G′ 是 G 的一个导出子图。若 G′ 是 G 的导出子图,且 G′ 半连通,则称 G′ 为 G 的半连通子图。若 G′ 是 G 所有半连通子图中包含节点数最多的,则称原创 2020-05-21 22:37:20 · 1025 阅读 · 0 评论 -
边的染色 (dfs + 思维)
边的染色题目描述小团有一张n个点,m条边的无向图G,有些边上已经被标记了0或1,表示它的边权。现在你需要给剩下的边标记边权为0或1,求有几种标记的方式满足:对于G中任意一个环,里面所有边的边权的异或值为0。环的定义如下:对于任意k(k≥2)个点{a1,a2,…,ak},若对于所有的i<k满足ai与ai+1之间有边,且a1=ak成立,则这k个点构成一个环。1≤n≤100,000...原创 2020-05-02 16:17:11 · 818 阅读 · 0 评论 -
最小生成树 (kruskal + prim)
kruskal复杂度 O(mlogm) (m为边数,适用于稀疏图)总体思想是把边以 边权从小到大排序 ,再依次加入到集合中;#include<bits/stdc++.h>using namespace std;const int INF = 0x3f3f3f3f;const int N = 1e5+7;struct node{ int a,b,w;}edge[N...原创 2020-04-24 15:25:07 · 159 阅读 · 0 评论 -
树学 +Accumulation Degree (换根DP)
树学很明显地可以使用换根思想简化暴力,先dfs求出以1为根的dpeth和,作为ans的初始值,然后再dfs2换根操作,当孩子和父亲身份互换时,我们可以由父亲的信息推出孩子作为根时的depth和。由此我们便可以避免每次换不同的根去暴力。depth[j] = depth[s] - num[j] + (n - num[j] ) , 其中 j 是s的孩子,num[j] 为以 j 为根的树的大小。...原创 2020-04-17 00:57:56 · 318 阅读 · 0 评论 -
城市网络 (树上倍增)
城市网络题目描述: 一颗以1为根的树,每个结点放有珠宝,给出q个询问,每次一对(u , v),v在u到根节点的路径上,一个商人从u到v,初始他有价值为c的珠宝,当结点的珠宝都比商人手中的大时,商人会买入它,问每次行程买入多少次。n , q (2 ≤ n ≤ 10^5 , 1 ≤ q ≤ 10^5)。a_i (1 ≤ a_i ≤ 10^5) 描述每个城市售卖的珠宝的价值。Solution...原创 2020-04-10 14:19:44 · 183 阅读 · 0 评论 -
LCA (倍增 + tarjan)
祖孙询问倍增求LCA:这里的倍增函数 fa[ i ][ j ] :代表 i 结点往上走2^j 步是哪个结点,很显然边界就是 i 往上走一步是父亲结点,剩下的就可以倍增初始化了。复杂度:预处理:O(nlogn),m个查询:O(mlogn);#include<iostream>#include<cmath>#include<cstring>#inclu...原创 2020-04-10 13:43:56 · 213 阅读 · 0 评论 -
二分图(判定+无权最大匹配)
染色法判定二分图之所以能用染色法判定,是因为一个图是二分图当且仅当图中不存在奇数环,而染色法能判定一个图中是否存在奇数环。Code:#include<iostream>#include<cstring>#include<cstdio>using namespace std;const int N = 1e5+7;int h[N],e[N*2],...原创 2020-04-07 21:38:13 · 181 阅读 · 0 评论 -
Shortest Path(树形DFS 思维)
Shortest Path题目大意: 给你一颗带权树,保证有偶数个节点n,把这n个节点分成 n/2 对儿,每对儿两点之间的权值为 len,即为原来两点之间路径的边权和,求这 n/2 对儿的 len和 的最小值。题解: 即为树,那几乎又离不开递归求解,维护答案。此题的关键在于对题目求解问题的转换和分类简化。很显然若要总和最小,那么在分对儿时 两点之间的经过边数不会超过两条 ,所以我们考虑一个...原创 2020-04-04 19:34:03 · 201 阅读 · 0 评论 -
树的重心 (P1395 会议)
P1395 会议思路: 读题后感觉是树的重心,但又不确定,所以查了下重心的性质:定义: 树的重心也叫树的质心。对于一棵树n个节点的无根树,找到一个点,使得删除这个点后最大连通块(一定是树)的结点数最小,那这个点就是树的重心。重心性质:1、树中所有点到某个点的距离和中,到重心的距离和是最小的,如果有两个重心,他们的距离和一样。2、把两棵树通过一条边相连,新的树的重心在原来两棵树重心的连...原创 2020-03-25 12:53:44 · 395 阅读 · 1 评论