1. 程式人生 > >總結(18.5.28)

總結(18.5.28)

題意 差分約束 嚴格 bsp 不可 順序 並不是 編號 格式

今天寫了幾個差分約束的題目,這些題目大都非常簡單,只要找對大小比較的關系,確定應該用最短路來寫還是最長路寫,需不需要虛擬節點,接下來再根據個人習慣用dfs或bfs寫個求最短路的模板,差不多就可以了(如果是區間的話,可以用前綴和考慮大小關系)。以洛谷P1260工程規劃一題為例子:

/**

題目描述

造一幢大樓是一項艱巨的工程,它是由n個子任務構成的,給它們分別編號1,2,…,n(5≤n≤1000)。由於對一些任務的起始條件有著嚴格的限制,所以每個任務的起始時間T1,T2,…,Tn並不是很容易確定的(但這些起始時間都是非負整數,因為它們必須在整個工程開始後啟動)。例如:挖掘完成後,緊接著就要打地基;但是混凝土澆築完成後,卻要等待一段時間再去掉模板。

這種要求就可以用M(5≤m≤5000)個不等式表示,不等式形如Ti-Tj≤b代表i和j的起始時間必須滿足的條件。每個不等式的右邊都是一個常數b,這些常數可能不相同,但是它們都在區間(-100,100)內。

你的任務就是寫一個程序,給定像上面那樣的不等式,找出一種可能的起始時間序列T1,T2,…,Tn,或者判斷問題無解。對於有解的情況,要使最早進行的那個任務和整個工程的起始時間相同,也就是說,T1,T2,…,Tn中至少有一個為0。

輸入輸出格式

輸入格式:

第一行是用空格隔開的兩個正整數n和m,下面的m行每行有三個用空格隔開的整數i,j,b對應著不等式Ti-Tj≤b。

輸出格式:

如果有可行的方案,那麽輸出N行,每行都有一個非負整數且至少有一個為0,按順序表示每個任務的起始時間。如果沒有可行的方案,就輸出信息“NO SOLUTION”。

分析:

這一題首先根據題意可以知道是個差分約束的模板題,因為有不可行的方案,所以需要判斷負環,然後題目說“每行都有一個非負整數且至少有一個為0”,所以輸出的答案都加上一個最小值就可以了。

**/

小結:

總而言之,差分約束的題目了解的差不多了,解法也很簡單,只是有時候想不到原來這麽簡單,只要想到思路,就要很快的能用代碼實現,思路清晰很重要模板背熟很重要

                                           -------5月28日

總結(18.5.28)