
图论算法
oier_forever
这个作者很懒,什么都没留下…
展开
-
HDU1181 题解(Floyd最短路)
变形课 Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 131072/65536 K (Java/Others) Total Submission(s): 26776 Accepted Submission(s): 9787Problem Description 呃……变形课上Harry碰到了一点小麻烦,因为他并不像Herm原创 2017-12-14 18:52:28 · 207 阅读 · 0 评论 -
Codeforces 429E(欧拉回路)
题面传送门 题目大意: 有n条线段,每条线段染红色或蓝色,使得数轴上每个点被红色线段覆盖的次数与被蓝色线段覆盖数差的绝对值小于等于1。输出染色方案。分析题意其实可以这样理解: 一段初始全为0 的序列a,给区间[li,ri][li,ri][l_i,r_i]+1或-1,使得操作结束后序列中的所有位置绝对值不超过1 可采用差分的思想,给al+1,ar+1−1al+1,ar+1−1a_...原创 2018-08-17 09:01:24 · 241 阅读 · 0 评论 -
BZOJ 3252题解(贪心+dfs序+线段树)
题面传送门分析此题做法很多,树形DP,DFS序+线段树,树链剖分都可以做 这里给出DFS序+线段树的代码 我们用线段树维护到根节点路径上节点权值之和的最大值,以及取到最大值的节点编号x 每次从根节点走到x,将点归0,再把最大值累加 然而,修改操作怎么做呢? 这里当然可以树剖,但是还有代码量更小的做法 从x往父亲跳,每次将子树中的节点值都-v(v为当前节点的权值,当前节点权值...原创 2018-08-22 20:17:21 · 197 阅读 · 0 评论 -
Codeforces 916E(思维+dfs序+线段树+LCA)
题面传送门 题目大意:给定初始根节点为1的树,有3种操作 1.把根节点更换为r 2.将包含u,v的节点的最小子树(即lca(u,v)的子树)所有节点的值+x 3.查询v及其子树的值之和分析看到批量修改子树,我们想到将树上操作转化为区间操作 通过DFS序我们可以实现这一点. 对于每个节点x,我们记录它在前序遍历中的位置l[x],再一次回到x时的序号r[x],则x及其子树的区...原创 2018-07-29 17:11:21 · 300 阅读 · 1 评论 -
Codeforces 396C (DFS序+线段树)
题面传送门 题目大意: 给定一棵树,每个点都有权值,边的长度均为1,有两种操作 操作1:将节点u的值增加x,并且对于u的子树中的任意一个点v,将它的值增加x-dist(u,v)*k, dist(u,v)表示u,v之间的距离 操作2:查询节点u的值分析这类题目需要用到一个重要的思想:将树上操作转化为区间操作 通过DFS序我们可以实现这一点. 对于每个节点x,我们记录它在前序遍...原创 2018-07-29 16:04:45 · 371 阅读 · 1 评论 -
Codeforces 191C (LCA+树上差分算法)
题面传送门 题目大意: 给出一棵树,再给出k条树上的简单路径,求每条边被不同的路径覆盖了多少次分析解决这个问题的经典做法是树上差分算法 它的思想是把”区间”修改转化为左右端点的修改 在树上,每个节点初始权值为0,对于每条路径(x,y),我们令节点x的权值+1,节点y的权值-1,节点LCA(x,y)的权值-2 最后进行一次DFS,求出F[x]表示x为根的质数中各节点的权值之和,...原创 2018-07-07 14:15:51 · 652 阅读 · 1 评论 -
Codeforces 609E (Kruskal求最小生成树+树上倍增求LCA)
题面传送门 题目大意: 给定一个无向连通带全分析代码原创 2018-07-10 16:26:42 · 401 阅读 · 1 评论 -
POJ 1383题解(树的直径)(BFS)
题面Labyrinth Time Limit: 2000MS Memory Limit: 32768K Total Submissions: 4997 Accepted: 1861 DescriptionThe northern part of the Pyramid contains a very large and complicated labyrinth. ...原创 2018-05-19 19:12:51 · 284 阅读 · 0 评论 -
HDU 3228 题解(最小生成树)(Kruskal)(内有详细注释)
题面:Island ExplorerTime Limit: 6000/3000 MS (Java/Others) Memory Limit: 32768/32768 K (Java/Others) Total Submission(s): 1297 Accepted Submission(s): 247Problem Description A group of exp...原创 2018-02-19 09:36:07 · 632 阅读 · 1 评论 -
Codeforces 843D (Dijkstra算法的优化,动态最短路)
题面(http://codeforces.com/problemset/problem/843/D) 题目大意: 给定一张带权无向图,有q次操作 操作有两种 1 v 询问1到v的最短路 2 c 将边l1,l2…lcl1,l2…lcl_1,l_2 \dots l_c 的权值增加1分析暴力的做法是每次重新建图,然后跑一次最短路 这样的时间复杂度是O((n+m)qlog2n+Σc...原创 2018-08-17 09:41:18 · 266 阅读 · 0 评论