1. 程式人生 > >1061 志願者招募 (利用網路流流量平衡進行等式建模)

1061 志願者招募 (利用網路流流量平衡進行等式建模)

1061: [Noi2008]志願者招募

Time Limit: 20 Sec  Memory Limit: 162 MB
Submit: 5862  Solved: 3529
[Submit][Status][Discuss]

Description

  申奧成功後,布布經過不懈努力,終於成為奧組委下屬公司人力資源部門的主管。布布剛上任就遇到了一個難

題:為即將啟動的奧運新專案招募一批短期志願者。經過估算,這個專案需要N 天才能完成,其中第i 天至少需要

Ai 個人。 布布通過了解得知,一共有M 類志願者可以招募。其中第i 類可以從第Si 天工作到第Ti 天,招募費用

是每人Ci 元。新官上任三把火,為了出色地完成自己的工作,布布希望用盡量少的費用招募足夠的志願者,但這

並不是他的特長!於是布布找到了你,希望你幫他設計一種最優的招募方案。

Input

  第一行包含兩個整數N, M,表示完成專案的天數和可以招募的志願者的種類。 接下來的一行中包含N 個非負

整數,表示每天至少需要的志願者人數。 接下來的M 行中每行包含三個整數Si, Ti, Ci,含義如上文所述。為了

方便起見,我們可以認為每類志願者的數量都是無限多的。

Output

  僅包含一個整數,表示你所設計的最優方案的總費用。

Sample Input

3 3
2 3 4
1 2 2
2 3 5
3 3 2

Sample Output

14

HINT

1 ≤ N ≤ 1000,1 ≤ M ≤ 10000,題目中其他所涉及的資料均 不超過2^31-1。

Source



簡單地說,如果等式中的變數剛好一正一負的出現,那麼就可以進行網路流流量平衡建模了。

每個等式代表一個點。所有變數在等式中只出現兩次,一次為正一次為負。那麼正的那個所在的等式向負的等式連邊,流量為該變數的取值範圍。有常數的話,常數為正的用超級源點向該等式連邊,流量為該常數,為負的話,該等式向超級匯點連邊,流量為該常數的絕對值。

如果每個變數有對應的費用,只需加上費用,跑費用流即可。

對於這道題,可以根據輸入和等式,很容易的判斷出變數在哪個等式裡為正,哪個等式裡為負。