NOI2008 志願者招募(費用流)

2021-09-27 02:36:16 字數 1534 閱讀 7080

很裸的費用流。

建圖也很顯然。

從源點向第一天連容量為inf

infin

f的邊,從第n+1

n+1n+

1天向匯點連inf

infin

f的邊。

然後從第i

ii天向第i+1

i+1i+

1天連容量為inf

−a[i

]inf-a[i]

inf−a[

i]的邊。現在的問題就是,我們需要花一定的代價對流量進行補償,對於一類志願者(s,

t,c)

(s,t,c)

(s,t,c

),我們從第s

ss天向第t+1

t+1t+

1天連容量為inf

infin

f,費用為c

cc的邊。

然後跑最小費用最大流。

**:

#include

#define ll long long

#define re register

#define cs const

cs int n=

1e3+7;

cs int inf=

1e9;

struct edge

;typedef std::vector

::iterator iter;

std::vector g[n]

;iter cur[n]

;inline

void

adde

(int u,

int v,

int val,

int cost));

g[v]

.push_back

((edge));

}int n,m,s,t,tot;

int dis[n]

;bool vis[n]

;inline

bool

spfa()

}return dis[t]

}int tot_cost,tot_flow;

intdfs

(int u,

int flow)

int ans=

0;vis[u]

=true

;for

(iter &e=cur[u]

;e!=g[u]

.end()

;++e)

if(e-

>cap&&dis[e-

>to]

==dis[u]

+e->w&&

!vis[e-

>to])}

vis[u]

=false

;return ans;

}inline

void

flow()

signed

main()

while

(m--

)flow()

;std::cout<"\n"

;return0;

}

NOI 2008 志願者招募(費用流)

題目描述 一共有n天,每天需要a i 個人,一共有m類志願者,每類有無限個,可以從s i 服務到t i 需要花費c i 的費用。問要滿足要求,最小的費用。題目分析 這題有乙個經典的也很奇妙的構圖法 利用不等式構圖 這個我不懂,想看的話請到byvoid神牛的blog裡面搜 我的想法很樸素,流的話就表示...

費用流 NOI2008志願者招募

time limit 20 sec memory limit 162 mb submit 5171 solved 3089 submit status discuss 申奧成功後,布布經過不懈努力,終於成為奧組委下屬公司人力資源部門的主管。布布剛上任就遇到了乙個難 題 為即將啟動的奧運新專案招募一批...

NOI2008 志願者招募 (費用流)

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