下面是差分约束系统的详细介绍,以及解决方法~ 摘抄自
xuezhongfenfei(他好像也是转的....)
差分约束系统
X1 - X2
X1 - X5
X2 - X5
X3 - X1
X4 - X1
X4 - X3
X5 - X3
X5 - X4
不等式组(1)
全都是两个未知数的差小于等于某个常数(大于等于也可以,因为左右乘以...
分类:
其他好文 时间:
2015-03-12 22:44:22
阅读次数:
216
int spfa_bfs(int s)
{
///s表示起点;
queue q;
memset(d,0x3f,sizeof(d)); ///d数组中存下的就是最短路径(存在的话)
d[s] = 0;
memset(c,0,sizeof(c));///c数组表示的是某一个节点的入队次数
memset(vis,0,sizeof(vis));///一如既...
分类:
其他好文 时间:
2015-03-12 22:42:15
阅读次数:
237
题意:求从出发点到每个车站的最短距离+从每个车站回到出发点的最短距离是多少
思路:如果从每个点到出发点求一次最短路10^5个点10^5次求SPFA也会超时,那么如果我们反向建边的话可以只用一次SPFA,因为是单向边嘛,把箭头反过来,再求一次起点到各点的最短距离不就行了?
#include
#include
#include
using namespace std;
const int inf ...
分类:
其他好文 时间:
2015-03-11 21:42:37
阅读次数:
141
先处理成前缀和关系,然后可以很明显得看得出这是一个差分约束。那么就是最短路问题了。顺便复习了一下SPFA加SLF优化是怎么写的,也学习到了另一个STL——Deque双向队列。#include #include #include #include #include #include #include ...
分类:
其他好文 时间:
2015-03-11 21:06:46
阅读次数:
129
题意:在最大的高度下面求最短路,由于题目给出限高,所以我们只需要二分高度然后用SPFA
#include
#include
#include
#include
#include
#include
#include
#include
using namespace std;
#define N 205
#define maxn 2005
const int INF = 999999...
分类:
其他好文 时间:
2015-03-08 23:00:44
阅读次数:
155
题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=2433 ,最短路(SPFA或优化过的Dijstra) + 剪枝优化 这道题关键还是在几个剪枝上面,没有剪枝会TLE。先说下几个数组的意义: a[]存储M条边的信息;vis[i]表示点i是否访问过;...
分类:
其他好文 时间:
2015-03-08 13:00:42
阅读次数:
545
题目链接:http://judge.u-aizu.ac.jp/onlinejudge/description.jsp?id=1311
题意: 给出一张有向图,和一个权值c,问将1~n亮点之间的最短路径花费降到c,最少需要修改多少条边。 数据规模是100个点,1000条边。
思路:这道题题目的最关键点就是想到用一个二维数据去记录每个点的情况(也就是dp式子的定义) dp[x][y] 表示从顶点1...
分类:
其他好文 时间:
2015-03-06 01:04:55
阅读次数:
140
一:邻接矩阵版本SPFA//如果要判断负环的话加一个记录入队的数组就行,当入队次数大于n的时候出现负环
int d[MAXN],vis[MAXN],w[MAXN][MAXN];
int n;
void SPFA(int s)
{
fill(d,d+n,INF);
d[s]=0;
queue q;
q.push(s);
while(!q.empty())
...
分类:
其他好文 时间:
2015-03-04 22:46:42
阅读次数:
211
题目链接:http://hihocoder.com/problemset/problem/1093 , 最短路的SPFA算法。 由于点的限制(10w),只能用邻接表。今天也学了一种邻接表的写法,感觉挺简单。 SPFA算法其实就是用了BFS的思想,不过和BFS有所不同,SPFA算法中每个顶点可...
分类:
其他好文 时间:
2015-03-04 16:16:03
阅读次数:
138
题解:
首先一个点可以分裂成多个新点,这样就有了图上动规的基础。
即f[i]表示i点被消灭的最小代价,它可以由分裂出的点们更新。
但是这个东西有后效性,所以我们用SPFA来处理它。
spfa处理后效性动规
我们每更新一个点A的动规值,就会有若干个点的动规值可能被更新。
即可以分裂出点A的那些点。
于是A出队后一旦动规值被更新了,就把那些点入队。
初始时要把所有点入队,因为它们都可能...
分类:
其他好文 时间:
2015-03-03 18:37:03
阅读次数:
574