洛谷P3254 圓桌問題

2022-05-24 02:24:09 字數 576 閱讀 9010

題目大意:有$m$個單位,每個單位有$r_i$個代表,有$n$張餐桌,每張餐桌可容納$c_i$個代表。要求同乙個單位的代表不在同乙個餐桌就餐。若可以,輸出$1$以及其中一種方案,否則輸出$0$

題解:貪心,把餐桌大小和單位人數從小到大排序,因為單位規模越大就越難滿足,所以我們優先考慮他們。而桌子越多越好,小桌子又容易滿而不能用,所以先坐大桌子。

卡點:

c++ code:

#include#includeusing namespace std;

int n,m;

struct nodeb[300],a[300];

int s[200][300];

inline bool cmp(node a,node b)

int main()

if (b[j].w)

j++;

} }puts("1");

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

return 0;

}

P3254 圓桌問題

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

P3254 圓桌問題

網路流建模,同時求出最大流的乙個可行流 建模如下 求可行流的方法 遍歷左邊的所有節點,在殘留網路上跑滿了流的邊即為一組解 include using namespace std const int n 430,m n 150 270 2,inf 1e8 int n,m,s,t int h n e m...

P3254 圓桌問題

題目鏈結 非常簡單的一道網路流題 我們發現每個單位的人要坐到不同餐桌上,那也就是說每張餐桌上不能有同一單位的人。這樣的話,我們對於每個單位向每張餐桌連一條邊權為1的邊,表示同一餐桌不得有相同單位的人。從源點向每個單位連一條邊權為人數的邊,從餐桌向匯點連一條邊權為餐桌容量的邊,這樣的話跑最大流,跑出來...