![](https://img-blog.csdnimg.cn/20201014180756918.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
图论
Dousir9
ACMer
展开
-
蓝桥-算法训练 ALGO-6 安慰奶牛【最小生成树】
题目链接题目描述:原题的描述真的烂。题意是这样的:给一张图,每个点和边都有权值,经过点和边的花费为权值的大小,现在要将这个图去掉一些边使其成为一颗生成树(题目只给了图),求从生成树的一个点 s (题目没给)出发,访问其他所有的点至少一次并返回 s 的最少花费。题解:这一看就是与最小生成树有关的题,因为题目要求从 s 出发最终还要回到 s,所以我们可以易知如果经过一条边,那么就要从这条边再回来(边要经过两次),因为是求最小生成树,我们得想办法将结点的权值合并到边上,对于一条新的从 u ->原创 2020-10-01 16:35:39 · 92 阅读 · 0 评论 -
HDU 1532 Drainage Ditches【最大流 | Edmonds-Karp模板】
题目链接题目描述:最大流Edmonds-Karp算法模板题。最大流最大流问题是基于有向图的,就是求两点 (分别称为源点、汇点) 间的最大流量,图中任何点都可以作为它们的中转。在求最大流时需要满足以下 3 个性质:流量守恒。从源点 s 流出的流量和到达汇点 t 的流量相等;其他所有中转点,流入和流出相等。反对称性。设从 uuu 到 vvv 的流量是 f(u,v)f(u,v)f(u,v),vvv 到 uuu 流量是 f(v,u)f(v,u)f(v,u),那么 f(u,v)=−f(v,u)f(u原创 2020-09-29 22:46:05 · 147 阅读 · 0 评论 -
EOJ Monthly 2020.9 B健康监测计划【贪心 | 思维 | 树形DP】
题目链接题目描述:华东师范大学共有 n 栋楼房,编号为 1, 2, …, n,并有 n − 1 条双向联通的道路连接这些楼房,使得任意两栋楼房之间有且仅有一条简单路径(一条简单路径是指,从一栋大楼出发,不经过重复大楼,并在另一栋大楼结束的路径)。学校为了贯彻落实常态化疫情防控政策,决定选择一些楼房,在其中各设置一个健康监测点,实时监测路过的同学的健康状况。虽然自动化检查仪器已经在全校普及,但是监测的过程依然不可避免地会影响学生的出入便捷性。所以学校需要精心安排监测点的位置,使得监测点数量尽可能多,而原创 2020-09-27 22:21:56 · 118 阅读 · 0 评论 -
蓝桥-算法训练 ALGO-5 最短路【SPFA | 模板】
题目链接题目描述:给定一个n个顶点,m条边的有向图(其中某些边权可能为负,但保证没有负环)。请你计算从1号点到其他点的最短路(顶点从1到n编号)。1 <= n <= 20000,1 <= m <= 200000,-10000 <= len <= 10000,保证从任意顶点都能到达其他所有顶点。SPFA:边权存在负数时不能用Dijkstra。判断负圈:如果一个点进队列超过 n 次,则说明图中存在负圈 (代码中neg数组)。注意:如果是双向边的话链式前向原创 2020-09-25 22:58:33 · 117 阅读 · 0 评论 -
洛谷 P1171 售货员的难题【状态压缩DP | TSP模板】
题目链接题目描述:TSP裸题。前言:复习复习状态压缩dp,每次做都有新的体会。题解:转态设计为 dp[s][i] 当前走过城市集合(包括自己)为s,目前所在城市为 i 的最小TSP路径,状态转移方程就不多说了,具体看代码,由于要求的是回路,所以最后还要加一次循环走回起点。优化:i 每次加 2,因为因为第一位所表示的地方是起点,无论如何都去过,所以这一位一直是1,没有这个优化,这道题只能得90分。AC Codes:#include <iostream>#include &原创 2020-09-22 22:28:00 · 298 阅读 · 0 评论 -
洛谷 P1342 请柬【Dijkstra | 反向建图】
题目链接小记:昨天一个学长面试中科院,其中有一道机试的题目就类似这道题,特此学习一下,希望明年的我也能保研成功,加油!题目描述:给一个有向加权图,求从编号为 1 的点向其他点 x 走并走回1的最短路径,这样的 x 很多,求它们的最短路径和。题解:可以把路径和分成两部分:从 1 到 x 们和 从 x 们 到 1,对于从 1 到其他点的最短路径和只需要跑一遍最短路,把数组 dis 累加即可;对于从其他点到 1 的最短路径和,可以反向(边的方向反向)建图跑一遍最短路,然后对 dis 数组就和。原创 2020-09-21 21:38:33 · 216 阅读 · 0 评论 -
POJ 3417 Network【树上差分 | LCA】
题目链接题目描述:你是一名黑客,你要摧毁竞争对手的网络,竞争对手的网络由N个点、N - 1条通道组成,并且每个点互相是联通的,但是竞争对手为了加固网络,增加了M条新通道,你的任务就是通过摧毁一条原来的通道和摧毁一条新通道来把竞争对手的网络分成两部分,问有多少种方法。题解:由描述我们可知,网络原本是一棵树,我们如果在树上(x, y)之间增加一条了新通道,那么新通道和原本网络上的通道就会形成一个环,那么如果我们切断树上 x->y 路径上的某条通道,那么我们下一步就必须切断新通道(x, y)才能把原创 2020-09-08 10:48:41 · 118 阅读 · 0 评论 -
HDU 2586 How far away ?【LCA | 树上倍增 | Tarjan | 模板】
题目链接题目描述LCA模板题:一棵树,给出两个点,两点间距离。题解:采用求LCA的算法可解决本题,给定一课有根树,若结点z既是节点x的祖先,也是y的祖先,则称z是x,y的公共祖先。在x,y的所有公共祖先中,深度最大的一个称为x,y的最近公共祖先,记为LCA(x, y)。下面是两种求LCA的算法:(1)树上倍增(在线);(2)Tarjan算法(离线)(1)树上倍增法(O(nlogn)):设F[x, k]表示x的2^k辈祖先,即从x到根节点走2 ^ k步到达的节点。若结点不存在,则令F[x, k]原创 2020-09-05 22:51:54 · 87 阅读 · 0 评论