題目大意:
你在經營乙個烤肉店,給你n個客人,每個客人都要求有ni的肉串,並且不要客人要求的肉串的一串烤製時間是不一樣的(為ti),客人將在si到,並且在ei的時候走。你有乙個烤肉機,每天可以烤製m個串,並且每個串是可以分不連續的幾天烤製。
題解:
從資料規模和模型很容易看出來是一道網路流的題目,hdu上還有一道弱化版的,是將每一天分作乙個點來,但是這題的si,ei有百萬規模,不論用哪種網路流演算法都是會超時的,所以要把時間按段做點。
/*
id: rec
prog: test
lang: c++
*/#include
#include
#include
#include
#include
#include
#include
#define mod 29999
#define inf 0x5f5f5f5f
struct aada[mod*10];
int n,m,s,t,cum;
int tou[mod*2],dd,dist[mod*2],cnt[mod*2],ans,time[mod*10];
ints[mod],e[mod];
void add(int
x,int
y,int f)
bool cmp(int
x,int
y)int sap(int
x,int delta)
if (da[i].f)mindis=std::min(mindis,dist[v]);
}if (sum==0)
return sum;
}int main()
std::sort(time+1,time+tot+1,cmp);
int c=1;
for (int i=1;i<=tot;i++)
if (time[c]!=time[i])time[++c]=time[i];
t=c+n+1;
for (int i=1;i<=c;i++)
while (dist[s]<=t)ans-=sap(s,inf);
if (ans==0)printf("yes\n");else
printf("no\n");
}return
0;}
HDU 2883 kebab 最大流建模
題意 乙個燒烤攤,最多同時考m個串,現在給n個顧客資訊,分別是到達燒烤店的時間,和他要走的時間,以及需要考的串的個數,和每個串烤熟需要的時間。問給定n個顧客,是否能夠滿足所有顧客的需求。思路從超級源點連邊到每個顧客,容量為ni ti,對於輸入的時間區間,將所有點排序去重,然後每個區間連邊到超級匯點容...
HDU 2883 kebab 最大流,滿流
題意 有乙個人有個烤架,他的烤架同時可以烤m個串,有n個顧客會過來買,si,ni,ei,ti分別表示當前顧客來的開始時間,需要烤串的數量,最晚走的時間,每個烤串需要烤的時間。思路 此題同 hdu 3572,比3572多乙個離散化 s 時間 顧客 t 因為此題時間範圍太大,所以需要離散化,然後時間是乙...
HDU 2883 kebab 離散化 最大流
hdu 2883 kebab 離散化 最大流 題意 給定n個顧客,第i號顧客在si到達,點了ni個羊肉串,每個羊肉串需要ti個時間烤好。顧客想要在ei得到,乙個烤爐只烤m串。問你是否能滿足所有顧客的要求?能的話輸出 yes 否則輸出 no 注意 這ni個羊肉串可以被分開來考,乙個單獨的羊肉串也能分開...