有nn
個餐桌m
m個公司,每個公司有a[i
]a[i
]個人,而每個餐桌能容納b[i
]b[i
]人。同乙個公司的人不能坐在乙個餐桌上。求能否滿足以上要求。
卡時卡過的,也不知道為什麼會被卡。
這道題很明顯最大流。公司放左邊,桌子放右邊,原點連公司,流量為公司人數,匯點連桌子,流量為可以容納的人數。所有公司依次和所有桌子相連,流量為1。
然後跑一邊最大流即可。
#include
#include
#include
#include
#define inf 1e9
using
namespace std;
int n,m,k,head[
800001
],dep[
800001
],s,t,x,sum,num,ans,p[
501]
[801
],peo[
801]
;struct edge
e[2000001];
void
add(
int from,
int to,
int c)
//建模
bool
bfs(
)//分層}}
return
(dep[t]
<
0x3f3f3f3f);
}int
dfs(
int u,
int low)
//找增廣路
}return0;
}void
print()
//輸出方案
for(
int i=
1;i<=n;i++)}
intmain()
}for
(int i=
1;i<=m;i++
)while
(bfs()
)if(ans
return
printf
("0\n")&
0;printf
("1\n");
print()
;return0;
}
洛谷P3254 圓桌問題
題目大意 有 m 個單位,每個單位有 r i 個代表,有 n 張餐桌,每張餐桌可容納 c i 個代表。要求同乙個單位的代表不在同乙個餐桌就餐。若可以,輸出 1 以及其中一種方案,否則輸出 0 題解 貪心,把餐桌大小和單位人數從小到大排序,因為單位規模越大就越難滿足,所以我們優先考慮他們。而桌子越多越...
洛谷 P3254 圓桌問題 (網路流24題)
題目 圓桌問題 思路 貪心,優先考慮人數多的團體,優先放在人數多的桌子上。如果不嫌麻煩考慮網路流做法,只需把起點和所有團體連人數的邊,團體和桌子連1,桌子和匯點連容量邊跑最大流就好。美麗的貪心 include using namespace std define maxn 300 define re...
洛谷P1251 網路流24題 餐巾計畫問題
這題用zkw是真的快 洛谷原先是卡了普通費用流的 但是現在時間到4s了,又有o2和高效能,貌似普通的費用流也可以過了,首先,要把每一天和源點匯點建一條容量為每天的需求的邊,費用為0,然後在條件滿足的情況下 i n num of days之類的 向快洗之後那天建容量inf費用f的邊,慢洗也是,注意要和...