GESP编程共123题,本题是整站第1453题,已经有人完成了本题,加油!
小杨管理着 m 辆货车,每辆货车每天需要向 A 市和 B 市运送若干次物资。小杨同时拥有 n 个运输站点,这些站点位于 A 市和 B 市之间。
每次运送物资时,货车从初始运输站点出发,前往 A 市或 B 市,之后返回初始运输站点。A 市、B 市和运输站点的位置可以视作数轴上的三个点,其中 A 市的坐标为 0,B 市的坐标为 x,运输站点的坐标为 p 且有 0<p<x。货车每次去 A 市运送物资的总行驶路程为 2p,去 B 市运送物资的总行驶路程为 2(x−p)。
对于第 i 个运输站点,其位置为 pi 且至多作为 ci 辆车的初始运输站点。小杨想知道,在最优分配每辆货车的初始运输站点的情况下,所有货车每天的最短总行驶路程是多少。
第一行包含三个正整数 n,m,x,代表运输站点数量、货车数量和两市距离。
之后 n 行,每行包含两个正整数 pi 和 ci,代表第 i 个运输站点的位置和最多容纳车辆数。
之后 m 行,每行包含两个正整数 ai 和 bi,代表第 i 辆货车每天需要向 A 市运送 ai 次物资,向 B 市运送 bi 次物资。
输出一个正整数,代表所有货车每天的最短总行驶路程。
输入 #1
3 4 10 1 1 2 1 8 3 5 3 7 2 9 0 1 10000
输出 #1
40186
第 1 辆车的初始运输站点为站点 3,第 2 辆车的初始运输站点为站点 2。第 3 辆车的初始运输站点为站点 1,第 4 辆车的初始运输站点为站点 3。此时总驶路程最短,为 40186。
子任务编号 | 数据点占比 | n | s | ci |
---|---|---|---|---|
1 | 20% | 2 | 2 | 1 |
2 | 20% | ≤10^5 | ≤10^5 | 1 |
3 | 60% | ≤10^5 | ≤10^5 | ≤10^5 |
对于全部数据,保证有 1≤n,m≤10^5,2≤x≤10^8,0<pi<x,1≤ci≤10^5,0≤ai,bi≤10^5。数据保证 ∑ci≥m。
解析:本题的核心是优化所有货车的总行驶路程,通过合理分配每辆货车的初始运输站点来实现。
为了最小化总行驶路程,我们应该尽可能让那些更频繁去A市或B市的货车从离目标城市更近的运输站点出发。具体来说:对于一辆需要更多次前往A市的货车,应该尽量安排在距离A市(坐标0)较近的运输站点。对于一辆需要更多次前往B市的货车,应该尽量安排在距离B市(坐标x)较近的运输站点。
基于上述贪心策略,我们首先对货车的需求(ai,bi)进行排序,根据(ai,bi)的值。如果ai > bi 则该货车更适合靠近A市;反之,则更适合靠近B市。
然后,我们同样对运输站点按照它们的位置pi进行排序,并尝试从两端开始分配货车到最合适的运输站点,直到所有货车都被分配完毕。
参考程序
本站题目仅供学习,GESP版权归CCF所有,如有侵权请联系删除。站长陈老师QQ及微信:208234。