脑补了一个:
先计算所有n个人到m个避难所的距离,分别为D11, D12, ... D1m; ... Dn1, ... Dnm,共得到n*m个数,从小到大排序。
然后依次取,每取走一个,将所有同1号下标的数从列表里删除。
再弄m个列表,记录每个避难所里已经安排的人序号,每取走一个,添加到2号下标对应的避难所里。
取的时候若对应的避难所已满,则跳过。
【 在 flydream 的大作中提到: 】
: n个人疏散到m个避难所,每个避难所最多能容纳M个人,M*m>n. 求所人的疏散距离之和最短的疏散方案。n最大1000000, m=5. 每个人到每个星球的距离是输入。如果没有最优解次优解也行。
- 来自 水木社区APP v3.5.4
--
FROM 125.119.236.*