hdu2883 kebab (最大流 離散化)

2021-08-14 03:29:14 字數 1189 閱讀 4396

題目大意:

你在經營乙個烤肉店,給你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個羊肉串可以被分開來考,乙個單獨的羊肉串也能分開...