[问题] 一题现实中的问题

楼主: GYLin (Lynx)   2019-03-09 08:59:53
由于是现实的问题 所以有没有P的解我也不知道
还请各位见谅
问题如下:
有N个人(N<=60)参加面试
有M个部门(M=7)可以选
面试时间有T个(T=6)
每个人可以选1~3个部门面试
且每个人各有可以的时间(1~T之中任意选取)
======
想请问考虑所有部门的各时段(M*T个),
他们之中人数最大值, 最少可以是多少, 能让所有人排到面试.
(各个人想面试的每个部门都要能面试到)
======
如果每个人只能选择一个部门, 我有想到最大流的解法,
从原点流向每个人, 再从每个人流向M*T个时段,
调整各时段的出容量, 逐次加一, 当总流量=人数,
此出容量即为解.
但是当一个人可以面试多个部门, 我卡在一个人同时间不能出现在两地,
不知道能不能依然用最大流解...
作者: FRAXIS (喔喔)   2019-03-15 11:10:00
喔喔 我想错了
作者: LPH66 (-6.2598534e+18f)   2019-03-14 18:11:00
flow 不会复制, 所以楼上那样的 cap 3 永远只会满足至多 1原 PO 现在的问题就是在这里
作者: FRAXIS (喔喔)   2019-03-09 12:06:00
最大人数最小值 <- 你是说部门人数吗?如果是实务上的问题 就建一个 integer programm 来解吧因为每个人顶多只能面试三次 所以你只要用C(TM, 3) 个node 就可以表示 constraint ?
作者: lancerd (lancerW)   2019-03-16 01:07:00
“每个人可以选1~3个部门面试”是说“每个人各自选好部门了,部门数量最多是三个”,还是说你的答案要让“每个人随便选三个部门”的所有情况都满足?
楼主: GYLin (Lynx)   2019-03-16 13:16:00
谢谢LPH大大解释,回楼上是前者

Links booklink

Contact Us: admin [ a t ] ucptt.com