bzoj3280 小R的煩惱(費用流)

2021-08-18 15:56:17 字數 1217 閱讀 4454

題目傳送門

。解法:

一開始yy了個建圖。

完全沒毛病。

結果不知道怎麼判impossible了。。

很尷尬。

每天分成兩個點。

乙個點x表示今天收到多少個活人。。

乙個點y表示多少個瀕死的人。

今天僱的人一定會用。所以變成死人。大學連y,容量無限費用q[i]

每天最多a[i]個死人。st連y容量a[i]費用0

每天最多a[i]個活人。x連ed容量a[i]費用0

死人救活了。懶得寫怎麼連了。

今天的活人可以留到明天。x連x+1容量無限費用0

最小費用最大流

**實現:

#include

#include

#include

#include

#include

#include

#include

using

namespace

std;

struct node a[1100000];int len,last[110000];

void ins(int x,int y,int c,int d)

intlist[11000],head,tail,st,ed,d[11000],fbian[11000];bool v[11000];

bool spfa()

}}v[x]=false;head++;if(head==ed+1)head=1;

}return d[ed]==999999999?false:true;

}int f;

int wh()

x=ed;f+=flow;

while(x!=st)

return flow*d[ed];

}const

int inf=999999999;

int main()

for(int i=1;i<=m;i++)

while(k--) f=0;

int ans=0;

while(spfa()==true) ans+=wh();

printf("case %d: ",tt);

if(fprintf("impossible\n");

else

printf("%d\n",ans);

}return

0;}

bzoj3280 小R的煩惱

description 小r最近遇上了 煩,他的程式設計掛科了。於是他只好找程設老師求情。善良的程設老師答應不掛他,但是要求小r幫助他一起解決乙個難題。問題是這樣的,程設老師最近要進行一項 的實驗來證明p np,這個實驗一共持續n天,第i天需要a i 個研究生來給他搬磚。研究生畢竟也是人,所以僱傭研...

bzoj 3280 小R的煩惱

題意 n天,m個學校,k個醫院。每天需要a i 個人,這a i 個人工作後處於瀕死狀態,你可以選擇把瀕死狀態的人送去醫院,治好後還可以繼續工作。每個醫院i救治乙個人需要d i 天,費用q i 元。學校 i 中乙個人工作一天薪酬為p i 思路 時間為乙個天然序,第i天的決策為從健康的人中選擇a i 個...

小R的煩惱 BZOJ3280

分析 一開始一直wa,發現是建圖建錯了,必須得拆點。s連i,流量為a i 費用為0,i n連t,流量同上,費用為0,之後i連i 1費用為0,流量為inf,之後s連n 2 i,流量為li,費用為0,之後列舉j從1到n,n 2 i連線j n,費用為p i 之後i連線i d i 1,費用為q i 流量為i...