![](https://img-blog.csdnimg.cn/20201014180756927.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
图论
文章平均质量分 50
通信男神杨丽斌
我们不能,不能失去信仰
展开
-
BZOJ 1726: [Usaco2006 Nov]Roadblocks第二短路 ——Dijkstra+玄学
这个题玄学冲过,规定每个点访问次数不能超过50次,然后找优先队列中第二次到达终点t的状态返回就ok记录一下,怕忘了#include <cstdio>#include <cstring>#include <algorithm>#include <iostream>#include <vector>#include <...原创 2020-03-07 16:44:12 · 169 阅读 · 0 评论 -
牛客练习赛56.小雀和他的王国 (无向图缩点+树的直径)
题目链接:https://ac.nowcoder.com/acm/contest/3566/E题目大意:给定一个无向图,初始时无向图内的任意两点均有若干条路径,现在你可以加一条边,使得下一次随机删除一条边时,删除的边让某两个城市变成无法连接的概率最小,求最小概率。思路:一眼就可以看出,如果删除的是桥,那么就会形成两个城市无法连接的情况。所以我加边的时候就需要尽可能地让一些桥变成...原创 2020-01-01 12:09:58 · 171 阅读 · 0 评论 -
[HAOI2015]树上染色(树上背包)
题目描述有一棵点数为 N 的树,树边有边权。给你一个在 0~ N 之内的正整数 K ,你要在这棵树中选择 K个点,将其染成黑色,并将其他 的N-K个点染成白色 。 将所有点染色后,你会获得黑点两两之间的距离加上白点两两之间的距离的和的受益。问受益最大值是多少。输入格式第一行包含两个整数 N, K 。接下来 N-1 行每行三个正整数 fr, to, dis , 表示该树中存在一条长度为 ...原创 2019-12-11 21:30:55 · 215 阅读 · 0 评论 -
UValive 4288 (二分图最大独立集)
题目大意有n个人,有c只猫与d只狗,每个人要么喜欢一只狗且讨厌一只猫,要么喜欢一只猫且讨厌一只狗,所以每个人都希望自己喜欢的被留下,自己讨厌的被带走,这样这个人就会满足,现在你需要找到一个猫狗集合方案,使得满足的人尽量多,求最多的满足人数。思路图很大,且样例很多,不能暴力建图(就是每个人除了对自己讨厌的东西之外都建边),所以需要思维优化。可以这样考虑,如果一个人喜欢的猫或狗是另一个人所...原创 2019-12-04 17:22:59 · 172 阅读 · 0 评论 -
UValive 3353二分图匹配
题目大意给你一个n(n<=100)点的有向带权图,你需要找若干个圈,使得每个节点恰好属于一个圈(不可相交),如果有这样的方案,请输出方案的最小权值和。注意是有向图。思路每一个点属于一个圈,这可以想到DAG的最小路径覆盖,每个点属于一条路径,在DAG的最小路径覆盖中,找到的最大匹配数实际是非终点的点的最大数量(每一个匹配对应一个起点),点数减去这个数量就是终点的最少数量,一个终点对...原创 2019-11-27 22:05:42 · 143 阅读 · 0 评论 -
LA3887(最小生成树)
题目链接:https://vjudge.net/problem/UVALive-3887题目大意:给你一个n(n<=100)个节点和m条边的图,你需要求一个最大权值边减去最小权值边最小的生成树。题目思路:需要用到最小生成树的思维:kruskal所求的最小生成树保证了一个条件,就是最大边权最小。利用这个条件,我们从小到大枚举最小边,然后用kruskal求最小生成树,在这个最...原创 2019-11-26 12:15:40 · 161 阅读 · 0 评论 -
Codeforce 1245D.Shichikuji and Power Grid(最小生成树)
题目链接:https://codeforces.com/contest/1245/problem/D题目大意:平面上有n个点(n<=2000),每两个点之间建边有一个花费,此外还可以选择一个点作为基站,这样与基站在同一个连通块的点都可以被覆盖,选择一个点当作基站也有一个花费,问你将所有点覆盖的最小花费是多少?思路:如果按照题目意思的想,建立k个基站就有k个连通块,每个连通块都...原创 2019-11-24 11:55:31 · 230 阅读 · 0 评论 -
UVa11367.Full Tank?(Dijkstra+DP)
题目链接:https://vjudge.net/problem/UVA-11367题目大意:给出n个地点 和 每个地点的油价 ,有 m 条边 , 并给出每条边长度 。1单位汽油可以走1千米 , 油箱的容量为 c , 在初始点 s 时 , 油箱中的油为 0 , 求s 到 t 的最小花费 。思路:因为并不能确定这个点是否需要加油,这不是一个单调性的问题,所以需要dp一下,用分层图的思...原创 2019-11-22 16:32:29 · 164 阅读 · 0 评论 -
Codeforce round 599 D. 0-1 MST (补图+BFS+思维)
题目链接:https://codeforces.com/contest/1243/problem/D题目大意:给定一个n节点的完全图(n<=1e5),现在给出m条边权为1的边(m<=min(n*(n-1)/2,1e5)),其余的边权值为0,问你这个图的最小生成树的权值大小是多少?题目思路:很明显,如果我们考虑边权为0的边并去掉边权为1的边,那么答案就是边权为0的边组成的...原创 2019-11-21 16:37:02 · 147 阅读 · 0 评论 -
codeforce round 600 div2.F.Cheap Robot(思维+最短路+最小生成树+LCA求树上两点最大边权)
题目链接:https://codeforces.com/contest/1253/problem/F题目大意:在一个无向图中,编号1~k的节点为中心点,可以充电,你有一个机器人,最大电容量为C,机器人在途中行走,如果一条边的距离为wi,机器人就会消耗wi的电量;机器人每行走到一个中心节点,电量自动充满。现在,有q个询问,每次询问输入u,v,(u,v必为中心节点)表示询问如果机器人可以从...原创 2019-11-20 17:10:53 · 470 阅读 · 0 评论 -
【网络流24题】最小路径覆盖模型
理论与证明看这里:https://blog.csdn.net/qq_39627843/article/details/82012572总结一下就是,最小路径覆盖有两种模型,一种是DAG上顶点不可相交的路径覆盖,一种是DAG上顶点可相交的路径覆盖,第二种是可以转化为第一种的,只需要用floyd传递闭包就可以了,这样两者都可以转化为二分图最大匹配的模型,算法就是,将DAG上的点U拆成Ux与Uy,如...原创 2019-11-07 19:23:10 · 317 阅读 · 0 评论 -
牛客练习赛53补题(D+E)
D.链接:https://ac.nowcoder.com/acm/contest/1114/D来源:牛客网德育分博弈政治课时间限制:C/C++ 1秒,其他语言2秒空间限制:C/C++ 524288K,其他语言1048576K64bit IO Format: %lld题目描述德育分学长最近玩起了骰子。他玩的骰子不同,他的骰子有六面,每面上写着一个 1 到 9 之间的数字,且...原创 2019-10-13 16:46:07 · 201 阅读 · 0 评论 -
P5060.旅行——(分层图最短路)
题目链接:https://www.luogu.org/problem/P5060题目大意:给你一个无向图,你需要在图中找到一条从s到t的最短路,使它的长度对p取模的值为0思路:这原来是分层图,让我更好的理解分层图的含义。我们原来最常见的分层图就是,给你一个图,要你求最短路,你可以在图中选择k条道路将花费变为0,这就有点像dp的味道,状态转移为当前这条边,我们选择将他变为0,或者...原创 2019-08-16 19:40:42 · 427 阅读 · 0 评论 -
牛客练习赛45F.Magic Slab(最大权闭合子图)
题目大意:给你一个矩阵c,你可以选择任意一行一列,选择一行需要花费a[i]的费用,选择一列需要花费b[i]的费用,但是你可以得到C(i,j)的利润,此外,还有m个关联条件,比如你选择点(r1,c1),(r2,c2),你就可以得到ki的额外利润,问你最后能获得的最大利润是多少?思路:最大权闭合子图的常见模型。仔细回想,最大权闭合子图是对于点而言的,而这里我们选择一行或者一列是有花费的...原创 2019-09-12 12:24:48 · 149 阅读 · 0 评论 -
HDU6664.Andy and Maze(dp+随机染色,color coding算法)
题目大意:你在一个n个点(1<=n<=1e4)和m条边(1<=m<=1e4)无向图中,每个点有一个宝石,你要收集k(2<=k<=6)个宝石才能逃脱,被访问的点不能再访问第二次,问你可能经过的最大权值是多少?思路:这种题好像专门有算法耶。。。还是随机算法。。。。Color coding 解决最小权重k-path问题不是很懂,又参考了大神博客:...原创 2019-08-27 15:33:07 · 617 阅读 · 0 评论 -
组队赛4.师范大学的寝室(二分图最大权值匹配)
题目大意:师范大学计划改造江边学生公寓,改造后的公寓一共有 n 个寝室,每个寝室可以住 4个学生。 在第一年,第 i 间寝室的学生分别是 x1、x2 、x3 、x4 ,现在到了第二年, 学生们需要决定和谁住一起。 在第二年,你得到了 个表,比如( y1、y2 、y3 、y4 )表示这四个学生想要住在一 起。现在你需要决定每个学生住在哪个宿舍,以尽量减少更换宿舍的学生人数。 数据范围为n<...原创 2019-08-22 17:34:19 · 143 阅读 · 0 评论 -
Codeforce 208E——Blood Cousins(dfs序+倍增寻找父节点+二分)
题目链接:https://codeforces.com/problemset/problem/208/E题目大意:给你一个有根树,树的根为0节点,给你m个询问,每次询问会询问,对于v这个节点的第p个祖先vp,有多少个节点的第p个祖先也是vp?如果是0那就输出0。思路:这题让我理解了如果求树上共享祖先的同一深度的节点数首先,我们必须得找到一个节点vp,它是v的第p个祖先,那么这个...原创 2019-08-17 00:01:16 · 222 阅读 · 0 评论 -
网络流经典模型——最大权闭合子图
网络流经典模型——最大权闭合子图 什么是闭合子图 闭合子图的概念 : 通俗点说就是选出一个图的子图,使得子图中的所有点出度指向的点依旧在这个子图内,则说明此子图是闭合子图。如下图 最大权闭合子图 : 假设每个点具有点权值,在一个图的所有闭合子图中,点权之和最大的即是最大权闭合子图 最大权闭合子图与最小割的关系 这里我们要证明最大权闭合子图的权值之和与最小割的...原创 2019-08-21 22:03:50 · 648 阅读 · 0 评论 -
【模板】基环树模板
原文地址:https://blog.csdn.net/weixin_44824275/article/details/93719776原创 2019-08-16 19:47:21 · 224 阅读 · 0 评论 -
牛客练习赛43E.Tachibana Kanade And Dream City(网络流)
链接:https://ac.nowcoder.com/acm/contest/548/E来源:牛客网题目大意:给你一个图,图上n个点每个点有两个权值vi,wi,还有m条边,每条边有一个cost,当你想将点u的vi权值经过这条边转移到v时,需要花费cost时间。现在你需要将所有的点的权值通过边进行处理,每个点最终都要满足一个条件:vi<=wi,问你需要时间最大的那个点的最小值是多少?...原创 2019-09-13 16:55:36 · 252 阅读 · 0 评论 -
牛客练习赛52F.发传单(有上下界流量控制的最小费用流)
链接:https://ac.nowcoder.com/acm/contest/1084/F来源:牛客网发传单时间限制:C/C++ 1秒,其他语言2秒空间限制:C/C++ 524288K,其他语言1048576K64bit IO Format: %lld题目描述wjyyy印了很多很多传单。wjyyy的传单非常好看,所以她想要分给她的所有好友看,当然,只是给他们看而已。...原创 2019-09-16 16:48:49 · 255 阅读 · 0 评论 -
P1074最优贸易(Tarjan+拓扑排序(dp))
题目链接:https://ac.nowcoder.com/acm/contest/1055/C题目大意:给定一个有向图,有向图中的每个点有一个权值,你需要在图中选择一条道路,道路上的最大权值减去最小权值最大。思路:书上给的思路是建立正图和反图,跑两边spfa,但是我拿到题目的第一个印象就是tarjan缩点然后dp,因为是有向图,所以可以缩点成为DAG,那么成为DAG之后就好办了,d...原创 2019-10-04 20:11:47 · 268 阅读 · 0 评论 -
2017CCPC湘潭邀请赛B.Roads(全局最小割+最小生成树)
2017CCPC湘潭邀请赛B.Roads(全局最小割+最小生成树)题目大意:给你一个n点m边的图,现在要在图中删除一些边,使得最小生成树的值严格地增大(不连通则最小生成树的值视为INF),问你最少需要删除多少条边?思路:这个题让我了解了什么是全局最小割:无向图的全局最小割即为将图G(V)中的点划分为两个部分S,T使得任意一条从S到T的边的权值之和最小。也可以理解为将这个无向...原创 2019-10-05 20:47:56 · 220 阅读 · 0 评论 -
2017四川省赛D.Dynamic Graph(类floyd的动态规划,或者bitset)
题目大意:给你一个有向无环图,一开始所有点都是白色的点,现在每次操作给一个点v,将他的颜色翻转(白色点变为黑色点,黑色点变为白色点),你需要在每次操作之后,回答这个图中有多少对(u,v)节点,u,v节点为白色,且u到v有一条全部为白色节点的路径。思路:如果每次询问求一次任意两点之间是否相通,复杂度为O(n^4),无法接受,不过有一种类似暴力的方法,用bitset维护图,这样可...原创 2019-10-06 21:20:09 · 210 阅读 · 0 评论 -
2016湖南省赛F.地铁(以边为点的最短路)
题目大意:给定一个n节点m条边的无向图,每条边有一个编号c,如果你上一次走的边的编号为ci,下一次走的边的编号为cj,那么你就需要花费|ci-cj|的时间换乘,此外,每条边还有花费,现在要你求1到n的最短路。思路:一个比较好想的思路就是,用dijkstra的堆优化,堆节点保存上一条进入点u的边的编号c,这样就可以取最小答案。但是,对于一个点而言,如果他有许多条编号不一样的入度边,...原创 2019-10-07 20:29:36 · 187 阅读 · 0 评论 -
走廊泼水节.(最小生成树+思维)
题目大意:给定一个树,你需要在这个树中添加若干条边,使得这颗树变成一个完全图,并且满足图的唯一最小生成树仍是这个树,问你最小添加的边权为多少?思路:不妨我们从头开始构造这个最小生成树。假设我们当前加入的边为Edge(u,v,cost),如果u所在的并查集为S(u),v为S(v),因为我们加的这条边,很明显是当前最小的(Kruskal的过程),那么如果我们要把原图变为一个完全图,则两...原创 2019-10-10 12:03:57 · 193 阅读 · 0 评论 -
NOI2007.社交网络.(任意两点间的最短路路径数)
社交网络.(任意两点间的最短路路径数)题目大意:给你一个n节点m条边的图(n<=100),要你对于每个节点v,求其中Cs,t(v)表示从s到t的最短路径,经过点v的条数Cs,t表示s到t的最短路路径数思路:之前做过一个题,求任意两点的路径数,可以用floyd推void floyd(int n){ for(int k=1;k<=n;k++)...原创 2019-10-10 15:10:50 · 398 阅读 · 0 评论 -
计蒜客ACM Shenyang 2015——M——meeting(dijkstra最短路)
题目大意:两头牛在图的1和n处,现给定一些区域集合Ei,这些区域集合中的点是可以互相到达的,且时间花费都为Ti,问两头牛能否相遇,相遇的最短时间和相遇的点的标记。题解报告:当初想到跑两边dijkstra,然而脑子抽不知道怎么保存和输出相遇的点的路径,结果就全盘否定,最后也没写多少。。。。。还是做题做少了。。。 思路:这题就是dijkstra最短路,不过建边时候要考虑一个问题,这个题的点为...原创 2018-09-06 23:45:57 · 139 阅读 · 0 评论 -
【模板】仙人掌的基本概念和判定
本文参考并转自:https://blog.csdn.net/houserabbit/article/details/38874549https://blog.csdn.net/kksleric/article/details/7870398https://blog.csdn.net/creationaugust/article/details/48007069 什么是仙人掌? 仙...转载 2019-08-20 21:30:30 · 651 阅读 · 0 评论 -
HDU6705.Path(任意起点终点的k短路)
题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=6705题目大意:给你一个有向图,任意一个点和边都可以经过很多次,问你整个图中,任意起点终点的k短路的长度是多少?你需要回答q个询问,每个询问给一个k思路:优先队列优化搜索,每次将所有点都加入队列中,意即每个点都可以为起点。那么,如果我们真正暴力地去搜索整个图,也就是每搜到一个点就把它所有...原创 2019-08-23 22:31:44 · 251 阅读 · 0 评论 -
UVa1660 -电视网络 (拆点法求最小割最大流)
题目链接:https://vjudge.net/contest/213916#problem/D对于求这种对于点的最小割模型,可以用到之前在海军上将里的拆点法,将点拆为真假两个节点,那么判断这个点是否割掉就是判断真假节点的边的容量是否满载(容量设置为1);对于其他点来说,真节点连接假节点,容量大小为INF,这样,对所有源点与汇点,跑一遍最大流,并判断最小的割点(流量)的值,就是答案。不过,...原创 2018-10-22 22:16:57 · 186 阅读 · 0 评论 -
UVA 1658 - 海军上将 (最小费用流+拆点)
题目链接:https://vjudge.net/problem/UVA-1658思路:拆点+最小费用流。这里的拆点法是解决网络流限制点的常用办法,因为如果直接删除点,会影响很多边,所以对每个非源点汇点的节点,将其拆成两个节点,一个真节点,一个假节点,并在节点中建边,容量为1,如果这条边满载了,说明这个真节点被访问了,就可以通过限制边来限制点了,所以最后再跑一遍从1到n的流量为2的最小费用流就行...原创 2018-10-07 12:20:36 · 295 阅读 · 0 评论 -
牛客国庆集训派对day3——I(多源最短路)
题目描述:链接:https://www.nowcoder.com/acm/contest/203/I来源:牛客网魔方国有n座城市,编号为。城市之间通过n-1条无向道路连接,形成一个树形结构。在若干年之后,其中p座城市发展成了大都会,道路的数量也增加到了m条。大都会之间经常有贸易往来,因此,对于每座大都会,请你求出它到离它最近的其它大都会的距离。 输入描述:第一行三个整数n,...原创 2018-10-06 16:58:06 · 288 阅读 · 0 评论 -
A*算法+最短路实现K短路+模板题
<font color=black size=4>K短路问题还是很普遍的,了解一下K短路很有必要,顺便学会A*的简单应用更好。A*算法,是一种启发式搜索算法,我们可以自己设定一个估价函数,这样我们的搜索过程就会优先选择有更好的估价函数的点进行搜索。在最短路中,A*的估价函数定义如下:f(p)=g(p)+h(p),g(p)表示当前从起始点s到点p的距离,而h(p)就是从终点到p的最短...原创 2018-09-22 18:05:41 · 1196 阅读 · 0 评论 -
牛客练习赛27——C——最短路变形
苦练动态规划中,然而还是推不出转移方程,感觉就是没有那个思路,痛下决心,一定要学好DP这个神奇的东西。1.AC challenge ——状态压缩+动态规划题目链接:ACM-ICPC 2018 南京赛区网络预赛题目描述:主人公AC题目,每个题目都有一个ai,bi,主人公在t时刻A了这个题,就可以获得ai*t+bi的分数。然而,主人公想要A掉i题,必须将所给出的i题的前缀题jA出来,即加上了一个...原创 2018-09-20 23:14:56 · 197 阅读 · 0 评论 -
UVA1001+牛客国庆集训派对——隐式图建图
1.UVa1001.奶酪里的老鼠题目链接:https://vjudge.net/contest/213916#problem/B大意就是一个三维空间中有n个洞,有两只老鼠在A和O两点,老鼠从A点出发,在奶酪中的移动速度为10米一个单位,在洞中是可以瞬间移动的,输入洞的圆心和半径,以及起点和终点的三维坐标,问最短时间。隐式图建图,建立从起点到所有洞圆心的边,建立从终点到所有洞的边,边长为...原创 2018-10-02 10:50:25 · 202 阅读 · 0 评论 -
L——Magical Girl Haze 【Dijkstra算法+分层图思想】
1000ms262144Kdescription: There are N cities in the country, and M directional roads from u to v(1≤u,v≤n). Every road has a distance ci. Haze is a Magical Girl that lives in City 1, she can cho...原创 2018-09-02 12:52:21 · 455 阅读 · 0 评论 -
组队赛3——网络流——K——escaping
题目大意: 给定一个n*n的图,给定一些点中的人数,给定一个逃生时间,再给定一个有一定救援物资的房间分布图,一个房间的人移动到另一个房间需要一个单位的时间,求给定时间内最多能救多少人. 考试的时候真不知道这是个网络流的问题,对于图论题还是不能准确的建模,能记住几个常用的模型也好啊T_T 结果就和逼哥一起写模拟程序,对于每个人,选定他能跑到最远的那个救生舱,直到救生舱的救援物资为0。然后...原创 2018-08-21 16:43:13 · 166 阅读 · 0 评论 -
UVa11082——矩阵解压——网络流学习
问题来源:刘汝佳紫书P374——矩阵解压。 思路:还是调用刘汝佳大大的思路建模:建立二分图,X节点为第i行的和,Y节点为第i列的和,再建立一个超级源点和超级汇点,每个X与源点建边,容量为每行之和减C,每个Y与汇点建边,容量为每列之和减R,再将每个X与Y建边,容量为19(这样的好处看后面),这样,求出网络流所有的最大流,如果最后每条由S-T的流都是满载,则说明有解,解就是每个X与每个Y上的流量。...原创 2018-08-24 00:14:42 · 369 阅读 · 0 评论 -
数的最长链——求最长路的思想+水题两道
求最长路的思想还是套用大佬们的分析: 给定一个无环图,要求途中的最长路,思想就是任意找到一个点s,从这个点出发进行一遍dfs或者bfs,寻找到一个离它最远的点,可以证明这个点就是最远点的一个端点,再从这个点出发进行一遍dfs或者bfs,找到离他最远的点,这两个点的距离就是最长路.思想还是很简单的,只要维护一个dist距离数组,利用两遍dfs就可以算出最长路了。 下面给出两道水题,方法都...原创 2018-08-20 11:31:22 · 573 阅读 · 0 评论