P1260 工程規劃

2022-07-12 05:45:09 字數 1103 閱讀 7660

題目非常得簡潔明瞭,差分約束的裸題,甚至連不等式都給你寫出來了

沒什麼好分析的,直接看不等式建立方程(這裡把\(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 ...