
图论-最短路/差分约束
Rain722
这个作者很懒,什么都没留下…
展开
-
Bellman-Ford算法及其队列优化与实战入门
Bellman-Ford算法能解决负权边的图,就是说能够来判断存在负环。先来看一下核心代码:dis[i] 为源点到i点的最短路 for(k = 1; k <= n-1; k++) //n为顶点的个数 for(int i = 1; i <= m; i++) //m为边的条数 if(dis[v[i]] > dis[u[i]] + w[i])原创 2016-09-01 17:34:26 · 533 阅读 · 0 评论 -
POJ3169Layout(线性约束)
题目大意:有n头牛排成一列,这些牛排列时候,有这个两个条件,A、B两头牛间的距离最大为D,或者A、B两头牛之间的距离至少为D,前ML个约束是第一种约束,后MD个约束是第二种约束,求第1头牛到第N头牛可能的最远距离。如果距离可以无限大,打印出-2, 如果不存在这样的排列打印出-1。分析:限制一转化为不等式即为d[b] - d[a] b的边的权值为D。限制条件二转化为不等式即为d[b] - d[a原创 2016-10-15 21:14:08 · 464 阅读 · 0 评论 -
HDU3440House Man(差分约束)
题意:有N个在一条直线上的房子, 每个房子有着不同的高度, 一个超人可以将这些房子左右移动但不能改变房子之间的相对位置.现在超人要从最矮的房子跳到刚好比他高的房子上面, 且每次跳的房子都要比当前房子要高.那么最后超人肯定会跳到最高的房子上面, 现在给出超人能够跳的最远距离, 问: 如何摆放这些房子, 使得超人能够经过所有的房子跳到最高的房子, 又要使最矮的房子和最高的房子之间的距离最远(指房子原创 2016-10-15 21:41:22 · 483 阅读 · 0 评论 -
POJ1716-Integer Intervals(区间约束)
题目链接:http://poj.org/problem?id=1716大致题意:给出数轴上的n个区间,每个区间都是连续的int区间。现在要在数轴上任意取一堆元素,构成一个元素集合V要求每个区间和元素集合V的交集至少有两个不同的元素求集合V最小的元素个数。#include#include#include#include#includeus原创 2016-10-21 21:29:24 · 450 阅读 · 0 评论 -
HDU5876Sparse Graph(补图最短路)
题意:给出一个图,和一个起点,求在该图的补图中从起点到其他N-1个点的最短距离。如果不连通输出-1.分析:利用原图求补图上的最短路,bfs遍历,U到 与U的不邻接的点的边即为补图的一条边,可以直接计算出 到这些不邻接的点距离,dis[v']=dis[u]+1;然后将这些不邻接的点加入队列,继续寻找,用两个集合,,一个记录不邻接的点,一个记录没有用过的点#incl原创 2017-09-03 16:48:33 · 452 阅读 · 0 评论 -
HDU6166Senior Pan(顶点子集最短路径-二进制划分集合)
搬运大佬的博客:http://blog.youkuaiyun.com/calabash_boy/article/details/77487605题解:回想最短路算法,首先排除掉N^3的的那个,然后剩下SPFA和Dijkstra跑多次的复杂度比较能接受,这两个其实是差不多的东西,由于边权都是正的,就上Dijkstra吧。基础版的Dijkstra是单源多汇的,但是本题是多源多汇原创 2017-08-29 18:58:22 · 597 阅读 · 0 评论 -
HDU6071Lazy Running(同余最短路)
题意: 给你一个由四个节点组成的环,求从节点2出发,回到节点2的不小于k的最短路。思路:取w=\min(d_{1,2},d_{2,3})w=min(d1,2,d2,3),那么对于每一种方案,均可以通过往返跑ww这条边使得距离增加2w2w。也就是说,如果存在距离为kk的方案,那么必然存在距离为k+2wk+2w的方案。设dis_{i,j}dis原创 2017-08-07 13:52:21 · 404 阅读 · 0 评论 -
HDU5361In Touch (最短路+并查集)
题目描述: 有n个传送机排成一排,编号从1到n,每个传送机都可以把自己位置的东西传送到距离自己[l, r]距离的位置,并且花费c,问从1号传送机到其他传送机的最小花费是多少思路: 从第一个点开始更新, 更新过的点从未被更新的点中除去, 因为在Dijkstra里 每次取出的都是最小的distance, 所以更新过的点 后面肯定不需要再次更新。更新一个点后加入堆中原创 2017-08-06 20:31:03 · 480 阅读 · 0 评论 -
Codeforces821D Okabe and City(思维建图+最短路运用)
题目大意:现在给你N*M的一个矩阵,现在上边一共有K个永恒亮着的点,主人公从左上角出发,走到的点必须有亮光才行。但是现在不保证有亮光的点能够使得主人公到达右下角,所以他可以花费1单位金币去使得一行或者一列暂时性的亮着,如果他想再次使用魔法,那么之前暂时亮着的部分就必须灭掉了。问他最少花费多少金币,能够从左上角走到右下角。如果不能走到,输出-1.原创 2017-07-18 20:19:39 · 567 阅读 · 0 评论 -
HDU5137How Many Maos Does the Guanxi Worth(最短路)
题意:从2~n-1这几个点中任意去掉一个点,使得从1到n的最短路径最大,如果任意去掉一个点1~n无通路输出Inf。思路:枚举去掉2~n-1个点,依次用spfa算法求取最短路,去最大即可#includeusing namespace std;#define pii pairconst int maxn = 35;int n, m;struct Edge{ in原创 2017-07-21 12:57:50 · 396 阅读 · 0 评论 -
HDU5521Meeting(最短路建图)
MeetingTime Limit: 12000/6000 MS (Java/Others) Memory Limit: 262144/262144 K (Java/Others)Total Submission(s): 2988 Accepted Submission(s): 952Problem DescriptionBessie and her f原创 2017-07-29 18:31:03 · 398 阅读 · 0 评论 -
CodeForces - 296D.Greg and Graph(Floyd+逆序思维)
D. Greg and Graphtime limit per test3 secondsmemory limit per test256 megabytesinputstandard inputoutputstandard outputGreg has a weighed directed graph, consis原创 2017-07-06 10:45:00 · 763 阅读 · 0 评论 -
2017 计蒜之道 百度地图导航(缩点+最短路)
百度地图上有 nn 个城市,城市编号依次为 11 到 nn。地图中有若干个城市群,编号依次为 11 到 mm。每个城市群包含一个或多个城市;每个城市可能属于多个城市群,也可能不属于任何城市群。地图中有两类道路。第一类道路是 城市之间的快速路,两个城市 u,vu,v 之间增加一条距离为 cc的边;第二类道路是 城市群之间的高速路,连接两个城市群 a,ba,b,通过这条高速路,城市群 aa里的每个原创 2017-06-10 21:50:57 · 498 阅读 · 0 评论 -
Dijkstra与spfa模板
Dijkstra优先队列优化:#include#include#include#include#includeusing namespace std;const int INF = 0x3f3f3f3f;const int maxn = ;int head[maxn], dis[maxn], cnt, n, m;struct edge{ int v, w, next原创 2016-11-25 16:54:37 · 621 阅读 · 0 评论 -
Codeforces 449B Jzzhu and Cities(最短路)
题目传送门:http://codeforces.com/contest/450/problem/D题意:一个城市,有m条道路,还有k条铁路(铁路都与点1相连),问在不改变点1到各个点的最短路的前提下最多可以删除多少条铁路思路:将道路和铁路一起建在同一个图中,跑一遍最短路并记录每个点的入度,接下来有两种情况可以判断可以删除这条铁路。1,如果最短路比铁路到点1的距离短,那毫无疑原创 2017-03-05 20:30:08 · 604 阅读 · 0 评论 -
差分约束详解
目录 一、引例 1、一类不等式组的解二、最短路 1、Dijkstra 2、图的存储 3、链式前向星 4、Dijkstra + 优先队列 5、Bellman-Ford 6、SPFA 7、Floyd-Warshall转载 2016-10-15 20:56:42 · 3443 阅读 · 0 评论