hdu 2883 最大流 離散化 dinic

2021-08-18 13:58:59 字數 1345 閱讀 7075

題意:給定n個顧客,第i號顧客在si到達,點了ni個羊肉串,每個羊肉串需要ti個時間烤好。顧客想要在ei得到,乙個烤爐只烤m串。問你是否能滿足所有顧客的要求?能的話輸出「yes」,否則輸出「no」。

和3572類似,不過時間太長要用區間,讀入每個時間點排序去重得到tot時間點 tot-1區間

建圖:源點到顧客任務(sp, i, ni * ti)

時間區間到匯點(j, tp, (t[j] - t[j-1]) * m)

顧客任務包含時間區間(i, j, inf)

最大流 == 總時間?

#include #include #include #include #include #include #include #include #include #include #define inf 0x3f3f3f3f

//#define ll long long

#define maxn 2005

using namespace std;

const int inf = 0x3f3f3f3f;

const int maxn = 2005;

int n, m;//點數、邊數

int sp, tp;//原點、匯點

struct node mp[maxn];

int pre[maxn], dis[maxn], cur[maxn];//cur為當前弧優化,dis儲存分層圖中每個點的層數(即到原點的最短距離),pre建鄰接表

int cnt = 0;

void init()

void add(int u, int v, int w)

bool bfs() }}

return dis[tp] != -1;

}int dfs(int u,int cap)

}if(!res)

dis[u] = -1;

return res;

}int dinic()

return ans;

}struct node1 pi[205];

int tim[410];

int main()

sort(tim, tim + tot);

tot = unique(tim, tim + tot) - tim;

sp = 0, tp = n + tot + 1;

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

for(int i = 1; i < tot; i++) }}

int ans = dinic();

if(ans >= maxflow)

else

}return 0;

}

hdu 2883 網路流 離散化

題意 有乙個烤肉店,有n個客人,每個客人點ni個ti時間花費的烤肉,每分鐘最多烤m個。客人有到和離開的時間限制,問是否可以滿足所有客人的需求。和 hdu3572很像,但是有兩點不同。1.3572中每個物品只能有乙個機器做,所以網路中物品到單位時間的容量是1.但是這個題不一樣,只要能流流不滿流多少都沒...

hdu2883 kebab (最大流 離散化)

題目大意 你在經營乙個烤肉店,給你n個客人,每個客人都要求有ni的肉串,並且不要客人要求的肉串的一串烤製時間是不一樣的 為ti 客人將在si到,並且在ei的時候走。你有乙個烤肉機,每天可以烤製m個串,並且每個串是可以分不連續的幾天烤製。題解 從資料規模和模型很容易看出來是一道網路流的題目,hdu上還...

HDU 2883 kebab 離散化 最大流

hdu 2883 kebab 離散化 最大流 題意 給定n個顧客,第i號顧客在si到達,點了ni個羊肉串,每個羊肉串需要ti個時間烤好。顧客想要在ei得到,乙個烤爐只烤m串。問你是否能滿足所有顧客的要求?能的話輸出 yes 否則輸出 no 注意 這ni個羊肉串可以被分開來考,乙個單獨的羊肉串也能分開...