loj6004 網路流 24 題 圓桌聚餐

2021-08-14 20:19:50 字數 1438 閱讀 3393

(

題目描述

假設有來自 n n n 個不同單位的代表參加一次國際會議。每個單位的代表數分別為 ri r_i r​i​​。會議餐廳共有 m m m 張餐桌,每張餐桌可容納 ci c_i c​i​​ 個代表就餐。

為了使代表們充分交流,希望從同乙個單位來的代表不在同乙個餐桌就餐。

試設計乙個演算法,給出滿足要求的代表就餐方案。

輸入格式

檔案第 1 1 1 行有 2 2 2 個正整數 m m m 和 n n n,m m m 表示單位數,n n n 表示餐桌數。

檔案第 2 2 2 行有 m m m 個正整數,分別表示每個單位的代表數。

檔案第 3 3 3 行有 n n n 個正整數,分別表示每個餐桌的容量。

輸出格式

如果問題有解,在檔案第 1 1 1 行輸出 1 1 1,否則輸出 0 0 0。

接下來的 m m m 行給出每個單位代表的就餐桌號。如果有多個滿足要求的方案,只要輸出乙個方案。

樣例 樣例輸入

4 5

4 5 3 5

3 5 2 6 4

樣例輸出

1 1 2 4 5

1 2 3 4 5

2 4 5

1 2 3 4 5

資料範圍與提示

1≤m≤150,1≤n≤270 1 \leq m \leq 150, 1 \leq n \leq 270 1≤m≤150,1≤n≤270

這題我竟然想了很久怕不是個傻x

從源點向每個團隊建團隊數的邊 然後因為每個團隊在每桌只可以有乙個人

那麼所以從每個團隊向每桌連容量為1的邊

然後從每個桌向匯點連容量為桌子坐的數量的邊 最後跑最大流看是否滿流

如果滿流輸出方案數即可

#include

#include

#include

#include

#define inf 0x3f3f3f3f

#define n 500

using

namespace

std;

inline

char gc()

return *s++;

}inline

int read()

return x;

}int num=1,h[n],level[n],n,m,t;

struct nodedata[110000];

inline

void insert1(int x,int y,int z)

inline

bool bfs()

}return0;}

inline

int dfs(int x,int s)

}return ss-s;

}int main()

} return

0;}

LOJ 6004 網路流 24 題 圓桌聚餐

題意 假設有來自 m mm 個不同單位的代表參加一次國際會議。每個單位的代表數分別為 r ir i ri 會議餐廳共有 n nn 張餐桌,每張餐桌可容納 c ic i ci 個代表就餐。為了使代表們充分交流,希望從同乙個單位來的代表不在同乙個餐桌就餐。試設計乙個演算法,給出滿足要求的代表就餐方案。連...

Cogs 729 網路流24題 圓桌聚餐

網路流24題 圓桌聚餐 輸入檔案 roundtable.in 輸出檔案 roundtable.out 評測外掛程式 時間限制 1 s 記憶體限制 128 mb 問題描述 假設有來自m 個不同單位的代表參加一次國際會議。每個單位的代表數分別為 ri i 1,2,3 m 會議餐廳共有n張餐桌,每張餐桌可...

loj6013 網路流 24 題 負載平衡

題目描述 g 公司有 n n n 個沿鐵路運輸線環形排列的倉庫,每個倉庫儲存的貨物數量不等。如何用最少搬運量可以使 n n n 個倉庫的庫存數量相同。搬運貨物時,只能在相鄰的倉庫之間搬運。輸入格式 檔案的第 1 1 1 行中有 1 1 1 個正整數 n n n,表示有 n n n 個倉庫。第 2 2...