首先跑一个最短路处理出每个点到源点距离(路径边权最大值,没有卡SPFA),然后按照这个距离排序,然后依次划分层次,我们可以观察到点的种类最多600个,那么就将困难值按愉悦值分段,先按点权排序,再跑一遍O(n)逐个标记就行以上就是预处理阶段然后解答询问就非常愉快了,直接枚举每一段的起点,然后将求解区间与该段的交集大小乘以每段的愉悦值相加就行了,复杂度是最短路SPFA:O(kn),排序O(nlogn),求解O(qmax(c)),总复杂度就是O(kn+nlogn+qmax(x)),能过掉这个题 #include<bits/stdc++.h> #define ll long long us...