比賽時有想到是最短路,可是覺得自己的是錯的就沒做qwq
有n頭牛,座標分別為s1
,s2,
s3..
.sn s1,
s2,s
3...
sn
,保證si
⩽si+
1 si⩽
si+1
。有ml
m
l個要求是第
a a
頭牛和第
b' role="presentation" style="position: relative;">b
b頭牛距離不能超過
d d
,然後有mr
' role="presentation" style="position: relative;">mrm
r個要求是第
a a
頭牛和第
b' role="presentation" style="position: relative;">b
b頭牛距離至少為
d d
。求第1頭和第n頭牛之間的最大距離。
第乙個要求就是a−
b⩽d' role="presentation" style="position: relative;">a−b
⩽da−
b⩽d,直接差分約束在a連b權值為d。然後第二種a+
b⩾d a+b
⩾d
就b連a權值-d。
這就是裸差分約束系統,可是我那時候不會
#include
#include
#include
#define mn 1010
using
namespace
std;
queue
q;struct linea[mn*30];
int n,ml,mr,tot,x,y,w,f[mn],ls[mn],len[mn];
bool v[mn];
void addl(int x,int y,int w)
int spfa()//函式如其名就是spfa}}
}if (f[n]>=690563370) return -2;
return f[n];
}int main()
for (int i=1;i<=mr;i++)
printf("%d",spfa());
}
差分約束系統 變相的最短路
之前沒有細看,想不明白這個問題怎麼和最短路扯上關係,細細看了看,也沒明白,原因是在看dijk演算法的時候就沒好搞明白它的 實現,以至於這個問題模擬到最短路實現的時候一臉懵,還去瞅了瞅三角不等式是什麼東西,簡單來說,難就難在圖的構造上面,構造好圖之後就是模板,就是之前的內容了,一起看看這個東西吧,on...
差分約束系統
差分約束 若 s a s b k 建一條b到a 的長度為k的邊 若s a s b k 建一條b到a 的長度為 k的邊 是求最小值的最長路 是求最大值的最短路 注意到最短路演算法的鬆弛操作 if d j d i w i j d j d i w i j 這其中的三角形不等式 d j d i w i j ...
差分約束系統
差分約束系統 對於差分不等式,a b c 建一條 b 到 a 的權值為 c 的邊,求的是最短路,得到的是最大值 對於不等式 a b c 建一條 b 到 a 的權值為 c 的邊,求的是最長路,得到的是最小值 存在負環的話是無解 求不出最短路 dist 沒有得到更新 的話是任意解 第三 一種建圖方法 設...