題目非常得簡潔明瞭,差分約束的裸題,甚至連不等式都給你寫出來了
沒什麼好分析的,直接看不等式建立方程(這裡把\(ti\)和\(tj\)都表示為\(i\)和\(j\))
因為求的應該是最早的開始時間,我們應該轉化為\(≥\),然後跑最長路求解
\(i-j \leq b\)
\(-j \leq b-i\)
\(j \geq i-b\)
那麼就應該是從\(i\)到\(j\)建一條負邊權
至於為什麼是跑最長路,如果不太理解的話可以看看我的部落格
其實我們可以用數學的方法簡單地思考一下這個問題
\(\beginx\leq10\\x\leq5\\\end\) 和 \(\beginy\geq10\\y\geq5\\\end\)
我們得出的答案應該是 \(x \leq 5\) 和 \(y \geq10\) (初中數學基本知識),我們應該的正解應該是範圍更小的那乙個。對於小於等於,最短路會使得答案範圍更小;相反,大於等於的話,最長路使得答案範圍更小,滿足不等式組的求解
那麼對於無解的情況,就是通過spfa判負環就可以了,如果不會的話建議先做這一道題,順便推薦一下同桌的部落格
那麼應該就沒什麼疑問了,直接看**
#includeusing namespace std;
const int maxn=5*1e6+51;
int n,m;
struct nodee[maxn];
int head[maxn],tot;
void add(int x,int y,int z)
int d[maxn],vis[maxn];
bool v[maxn];
queueq;
bool spfa(int s)
}} }
return true;
}int main()
for(register int i=1;i<=n;i++) add(0,i,0);
if(spfa(0)==false) puts("no solution");
else
return 0;
}
如果有錯的地方請指出啊,希望對大家有幫助 P1260 工程規劃
差分約束板子 差分約束 把 i j x 操作等價於從 j 到 i 連一條邊權為 x 的邊。然後跑一遍spfa統計最短路,即為一組合法序列。這道題裡要求以乙個點為基準點 0 在跑完spfa之後統計最小的dis值,然後按順序輸出dis值減去這個最小值即可。另乙個問題是圖不一定連通,有兩個解決方法 1.建...
題解 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 ...