需要注意的点:
①输入时直接将输入的每个地点的车辆数减去完美状况下的车辆数,结果可视为与完美状况的偏差值,方便理解与计算
②注意两个测试点考察的一个情况:挪用一个地点的车辆前提是该地点位于待补充车辆之前,不能从待补充车辆地点之后挪用车辆
③注意本题不能纯dijkstra考虑点权做法,因为不满足贪心条件,只能先找到所有最短路径,然后dfs查找到最优解
#include<bits/stdc++.h>
#define INF 0x3fffffff
struct node
{
int point,distance;
node() {}
node(int _point,int _distance):point(_point),distance(_distance) {}//构造函数
~node() {}//析构函数
friend bool operator < (const node &a,const node &b)//重载运算符,使优先队列按distance从小到大排序
{
return a.distance>b.distance;
}
};
inline int read()//快读,应该没啥用,主要是打一遍找手感
{
int w=1,x=0;
char ch=getchar();
while(ch>'9'||ch<'0')
{
if(ch=='-') w=-1;
ch=getchar();
}
while(ch>='0'&&ch<='9') x=(x<<3)+(x<