Luogu P1251餐巾計畫(上下界費用流)

2022-05-01 01:12:14 字數 1277 閱讀 8599

題目鏈結

學了一下上下界費用流,似乎很nb。但是我說得不好,所以這裡給出部落格鏈結。

某dalao的部落格

然後這道題的解法就是先用上下界費用流的建圖方式連早上和晚上之間的那條邊,保證當天一定會有r條或以上的餐巾可用。

然後考慮買,快洗,慢洗和放起來的諸多情況。

#include#include

#include

#include

#include

#include

#define maxn 5030

using

namespace

std;

inline

long

long

read()

while

(isdigit(ch))

return num*f;

}struct

edgeedge[maxn*20

];int

head[maxn],num;

inline

void addedge(int

from,int to,int val,int

dis);

head[

from]=num;

}inline

void add(int

from,int to,int val,int

dis)

inline

int count(int i)

intdis[maxn];

intpre[maxn];

bool

vis[maxn];

intflow[maxn];

intstart,end;

intspfa()

}if(dis[end]==pinf) return0;

int now=end;

while(now!=start)

return (long

long)dis[end]*flow[end];

}int

r[maxn];

intmain()

int p=read(),m=read(),f=read(),n=read(),s=read();

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

long

long ans=0

;

while(1

) printf(

"%lld\n

",ans);

return0;

}

Luogu P1251 餐巾計畫問題

不得不說這是一道非常好的費用流神題。建圖清新自然,構建沒有毒瘤。實為網路流24題中難得一見的好題。我們考慮一下網路流的建圖。首先拆點並建立超級源點ss和超級匯點 t 常見套路 我們把每一天拆成早上 x i 和晚上 y i 然後考慮每天早上要向 t 提供 r i 條乾淨的餐巾,而 s 要向每天晚上提供...

P1251 餐巾計畫問題

題面 一道特別棒的費用流好題,思路非常巧妙 對於每一天,我們分為早上和晚上兩個節點 每天早上會消耗 r i 條乾淨的毛巾,可以視為流向匯點,所以我們向匯點連一條流量為 r i 費用為 0 的邊 每天晚上會產生 r i 條髒毛巾,可以視為從源點流出,所以我們從源點連一條流量為 r i 費用為 0 的邊...

洛谷 1251 餐巾計畫問題

題鏈 題解 一點啟示 建圖時要考慮到流量問題,即為了方便使用最小費用最大流演算法,要把流量最大時為最終目的考慮進建圖。拆點,每天拆為兩個點i,i 表示每天開始和每天結束 s,i,ai,p 在第i天最多買ri個餐巾,花費為p i,t,ai,0 第i天要用ai塊餐巾 s,i ai,0 第i天用剩的ai塊...