P1260 工程規劃

2022-05-16 11:18:56 字數 1051 閱讀 2460

差分約束板子

差分約束:把 i - j >= x 操作等價於從 j 到 i 連一條邊權為 x 的邊。然後跑一遍spfa統計最短路,即為一組合法序列。

這道題裡要求以乙個點為基準點 0 ,在跑完spfa之後統計最小的dis值,然後按順序輸出dis值減去這個最小值即可。

另乙個問題是圖不一定連通,有兩個解決方法:

1.建乙個萬能點與所有的點相連,當然邊權都是0.

2.跑spfa的時候要記錄每個點的彈出次數,因此遍歷一遍點,彈出次數為0就spfa,否則continue

**:

#include#include

#include

#include

#include

#include

using

namespace

std;

int n,m,h[2005]={},dis[2005]={},cnt=0,minn,que[1000500]={},times[2005]={},head,tail;

bool vis[2005]={};

struct

edge

e[10005

];void add(int u,int v,intw);

h[u]=cnt;

}void spfa(int

st) que[++tail]=v;}}

}}

vis[st]=0;}

intmain()

for(int i=1;i<=n;i++)

dis[i]=214748364

;

for(int i=1;i<=n;i++)

minn=999999999

;

for(int i=1;i<=n;i++)

minn=min(minn,dis[i]);

for(int i=1;i<=n;i++)

printf(

"%d\n

",dis[i]-minn);

return0;

}

P1260 工程規劃

題目非常得簡潔明瞭,差分約束的裸題,甚至連不等式都給你寫出來了 沒什麼好分析的,直接看不等式建立方程 這裡把 ti 和 tj 都表示為 i 和 j 因為求的應該是最早的開始時間,我們應該轉化為 然後跑最長路求解 i j leq b j leq b i j geq i b 那麼就應該是從 i 到 j ...

題解 P1260 工程規劃

建議完成以下題目後在來看此題 題解哦。p3385 模板 負環 p5960 模板 差分約束演算法 核心演算法 差分約束 這幾乎是一道裸題 題中寫道 不等式形如 t i t j leq b 代表 i 和 j 的起始時間必須滿足的條件。每個不等式的右邊都是乙個常數 b 這些常數可能不相同,但是它們都在區間...

P1260 工程規劃 差分約束

差分約束.差分約束似乎精髓就兩句話 所以對於本題的式子 ti tj leq b 可以寫成 t i b leq t j 然後就從 i 向 j 連一條 b 的邊然後跑最長路即可.按式子可以隨便搞.includeusing namespace std const int maxn 5008 struct ...