小R的煩惱 BZOJ3280

2022-04-30 11:30:09 字數 902 閱讀 9199

分析:

一開始一直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],流量為inf,之後跑費用流就可以了。

附上**:

#include #include #include #include #include #include #include using namespace std;

#define n 155

#define s 0

#define t 151

struct node

e[n*200];

int head[n],cnt,dis[n],vis[n],from[n],ans,n,m,k;

void add(int x,int y,int z,int v)

void insert(int x,int y,int z,int v)

int spfa()}}

return dis[t]==0x3f3f3f3f?0:1;

}void mcf()

i=from[t];

while(i!=-1)

return ;

}int a[n];

int main()

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

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

}while(spfa())mcf();

for(int i=head[t];i!=-1;i=e[i].next)

}if(!v)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 個...

bzoj3280 小R的煩惱(費用流)

題目傳送門 解法 一開始yy了個建圖。完全沒毛病。結果不知道怎麼判impossible了。很尷尬。每天分成兩個點。乙個點x表示今天收到多少個活人。乙個點y表示多少個瀕死的人。今天僱的人一定會用。所以變成死人。大學連y,容量無限費用q i 每天最多a i 個死人。st連y容量a i 費用0 每天最多a...