[網路流24題] 圓桌聚餐★★ 輸入檔案:roundtable.in 輸出檔案:roundtable.out 評測外掛程式
時間限制:1 s 記憶體限制:128 mb
«問題描述:
假設有來自m 個不同單位的代表參加一次國際會議。每個單位的代表數分別為
ri(i=1,2,3…m), 。會議餐廳共有n張餐桌,每張餐桌可容納c i(i=1,2…n) 個代表就餐。
為了使代表們充分交流,希望從同乙個單位來的代表不在同乙個餐桌就餐。試設計乙個演算法,
給出滿足要求的代表就餐方案。
«程式設計任務:
對於給定的代表數和餐桌數以及餐桌容量,程式設計計算滿足要求的代表就餐方案。
«資料輸入:
由檔案roundtable.in提供輸入資料。檔案第1行有2 個正整數m和n,m表示單位數,n表
示餐桌數,1<=m<=150, 1<=n<=270。檔案第2 行有m個正整數,分別表示每個單位的代表
數。檔案第3 行有n個正整數,分別表示每個餐桌的容量。
«結果輸出:
程式執行結束時,將代表就餐方案輸出到檔案roundtable.out中。如果問題有解,在檔案第
1 行輸出1,否則輸出0。接下來的m行給出每個單位代表的就餐桌號。如果有多個滿足要
求的方案,只要輸出1 個方案。
輸入檔案示例 輸出檔案示例
roundtable.in
4 5
4 5 3 5
3 5 2 6 4 roundtable.out
1 1 2 4 5
1 2 3 4 5
2 4 5
1 2 3 4 5
/*
二分圖多重匹配問題.
最大流.
和前幾題做法相似.
建模的時候
從源點到貨庫建一條流量為庫存量的邊.
從貨庫與商店間建一條流量為1的邊.
從商店到匯點建一條流量為所需量的邊.
dinic即可.
*/#include
#include
#include
#include
#define maxn 10001
using
namespace
std;
struct datae[maxn*2];
int n,m,max1=1e9,ans,total,cut=1,dis[maxn],head[maxn],next[maxn];
bool in[maxn];
inline
int read()
while(ch>='0'&&ch<='9') x=x*10+ch-48,ch=getchar();
return x*f;
}void add(int u,int v,int x)
bool bfs()}}
return dis[n+m+1]!=-1;
}int dfs(int u,int y)
}if(!rest) dis[u]=-1;
return rest;
}void print()
printf("\n");
}}void dinic(int s,int t)
else
printf("0");
return ;
}int main()
COGS461 網路流24題 餐巾
問題描述 乙個餐廳在相繼的n天裡,第i天需要ri塊餐巾 i l,2,n 餐廳可以從三種途徑獲得餐巾。1 購買新的餐巾,每塊需p分 2 把用過的餐巾送到快洗部,洗一塊需m天,費用需f分 f 3 把餐巾送到慢洗部,洗一塊需n天 n m 費用需s分 s在每天結束時,餐廳必須決定多少塊用過的餐巾送到快洗部,...
loj6004 網路流 24 題 圓桌聚餐
題目描述 假設有來自 n n n 個不同單位的代表參加一次國際會議。每個單位的代表數分別為 ri r i r i 會議餐廳共有 m m m 張餐桌,每張餐桌可容納 ci c i c i 個代表就餐。為了使代表們充分交流,希望從同乙個單位來的代表不在同乙個餐桌就餐。試設計乙個演算法,給出滿足要求的代表...
LOJ 6004 網路流 24 題 圓桌聚餐
題意 假設有來自 m mm 個不同單位的代表參加一次國際會議。每個單位的代表數分別為 r ir i ri 會議餐廳共有 n nn 張餐桌,每張餐桌可容納 c ic i ci 個代表就餐。為了使代表們充分交流,希望從同乙個單位來的代表不在同乙個餐桌就餐。試設計乙個演算法,給出滿足要求的代表就餐方案。連...