Dining Problem:
几个家庭一起出去吃饭。为了增加他们之间的社交互动,他们希望坐在不同桌子上,以便同一个家庭的两个成员不会坐在同一张桌子上。假设这顿晚餐有
编辑: 该问题可以通过创建图并运行最大流算法来解决。但是,如果使用Dinic算法对2 * 10 ^ 3个顶点进行计算,则全局复杂度为O(10 ^ 6 * 10 ^ 6) = O(10 ^ 12)。
如果我们总是先坐较大的团体,以贪心的方式处理,则复杂度为O(10 ^ 6)。
所以我的问题是:
1)在这个问题中,贪心方法有效吗?
2)解决此问题的最佳算法是什么?
几个家庭一起出去吃饭。为了增加他们之间的社交互动,他们希望坐在不同桌子上,以便同一个家庭的两个成员不会坐在同一张桌子上。假设这顿晚餐有
p
个家庭,第i
个家庭有a(i)
个成员。同时,假设有q
张桌子可用,第j
张桌子的座位容量为b(j)
。
问题是:
我们可以在桌子上最多坐多少人?编辑: 该问题可以通过创建图并运行最大流算法来解决。但是,如果使用Dinic算法对2 * 10 ^ 3个顶点进行计算,则全局复杂度为O(10 ^ 6 * 10 ^ 6) = O(10 ^ 12)。
如果我们总是先坐较大的团体,以贪心的方式处理,则复杂度为O(10 ^ 6)。
所以我的问题是:
1)在这个问题中,贪心方法有效吗?
2)解决此问题的最佳算法是什么?