题目地址:P5638 【CSGRound2】光骓者的荣耀 - 洛谷 | 计算机科学教育新生态 (luogu.com.cn)
由题可知,所有城市如都在同一条链上,只要往前走就能到达终点,传送门的作用就是跳过某一段路程,但传送门只能使用一次,所以需要求出跳过这段路的最大值,以保证最快完成访问任务。
完整代码:
#include<bits/stdc++.h>
using namespace std;
long long a[1000005];//注意要开 long long
int main(){
long long n,k,max_x=0;
scanf("%ld%ld",&n,&k);
for(int i=1;i<n;++i){
scanf("%ld",&a[i]);
a[i]+=a[i-1];//前缀和
}
for(int i=1;i<=n-k;++i){
max_x=max(max_x,a[i+k-1]-a[i-1]);//求最多能越过的权值
}
printf("%ld",a[n-1]-max_x);//总路程减去