NOI2008志願者招募

2022-05-11 03:26:36 字數 2124 閱讀 4336

申奧成功後,布布經過不懈努力,終於成為奧組委下屬公司人力資源部門的主管。布布剛上任就遇到了乙個難題:為即將啟動的奧運新專案招募一批短期志願者。經過估算,這個專案需要n 天才能完成,其中第i 天至少需要ai 個人。

布布通過了解得知,一共有m 類志願者可以招募。其中第i 類可以從第si 天工作到第ti 天,招募費用是每人ci

元。新官上任三把火,為了出色地完成自己的工作,布布希望用盡量少的費用招募足夠的志願者,但這並不是他的特長!於是布布找到了你,希望你幫他設計一種最

優的招募方案。

第一行包含兩個整數n, m,表示完成專案的天數和可以招募的志願者的種類。

接下來的一行中包含n 個非負整數,表示每天至少需要的志願者人數。

接下來的m 行中每行包含三個整數si, ti, ci,含義如上文所述。為了方便起見,我們可以認為每類志願者的數量都是無限多的。

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

3 3

2 3 4

1 2 2

2 3 5

3 3 2

【樣例說明】

招募3 名第一類志願者和4 名第三類志願者。

【資料規模和約定】

30%的資料中,1 ≤ n, m ≤ 10,1 ≤ ai ≤ 10;

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

noi,數學 ,網路流 ,線性規劃

這是由等式 - >網路流的乙個建模轉化.根據提議列出若干個等式(或者是不等式,新增乙個輔助變數變成等式),如果發現滿足每個變數以正的負的形式都恰出現一次,即於每條邊(u,v)若為xi,xi會在u的流量平衡條件式子(約束)中以正的形式出現一次,在v的流量平衡條件式子中以負的形式出現一次,這經常是網路流的流量平衡條件,可用網路流來做.

參考部落格:

1 #include2 #include

3 #include4 #include5 #include6 #include7 #include8 #include9 #include10 #include11 #include12 #include13 #include14

#define ll long long

15#define rep(i,a,b) for(register int i=a;i<=b;i++)

16#define inf 1<<30

17#define il inline

18#define re register

19using

namespace

std;

20const

int n=1000+100,m=4*n*10;21

struct

edge

25 edge(int u,int v,int c,int f,int

w) : fr(u),to(v),cap(c),flow(f),cost(w) {}

26 }e[m*2

];27

inthead[n],num_e,n,m,s,t;

28int

d[n],a[n],p[n];

29bool

inq[n];

30int

demond[n];

31 il int

gi()

38void add(int u,int v,int c,int f,int

w) 44

bool spfa(int &cost) 60}

61}62if(d[t]==inf) return0;

63 cost += d[t] *a[t];

64for(re int u=t;u!=s;u=e[p[u]].fr)

68return1;

69}70int

mincostmaxflow()

75int

main() n

83 s=0,t=n+2

;84 rep(i,1,n+1

) 90

91 printf("%d"

,mincostmaxflow());

92return0;

93 }

NOI 2008 志願者招募

考慮用 p i 表示第 i 天實際招收的人數,我們假設我們有三種志願者,分別是 1 to 2,1 to 3 2 to 3 我們招手的人數分別是 b 1,b 2,b 3 那麼第一天實際人數就是 p 1 b 1 b 2 geq a 1 同理我們把三個不等式寫出來 b 1 b 2 ge a 1 b 1 b...

NOI2008 志願者招募

oj題號 bzoj1061 題目大意 有 n 個任務,m 個志願者,完成每個任務 i 至少需要 a i 個人,每個人只有在 s i 到 t i 的時候有空,並需要被支付 c i 的報酬,求完成所有任務的最小支出。思路 先挖空後補空 將每個時間抽象成點,並在時間軸的兩端增加源匯 s 和 t 每個相鄰的...

noi2008 志願者招募

題目大意 乙個專案需要n天才能完成,其中第i天需要ai個人,共有m類志願者可以招募,每種都有固定的工作時間和招募費用。找出一種最優的招募方案。分析 其實這題很明顯網路流,不過建圖真的很麻煩很麻煩,要用到等式轉換什麼的,我就不獻醜了,題解見 noi要是真出個讓你看出來是網路流的題,估計是沒幾個人能構出...