没想明白,我是枚举跳跃的点,然后直接求走过距离的最小值
#include <bits/stdc++.h>
using namespace std;
#define ll long long
const int N = 1000010;
ll road[N],sum[N],mins = 0xfffffff;
int main()
{
int n,k;
scanf("%d%d",&n,&k);
for(int i=1;i<=n-1;i++){
scanf("%lld",&road[i]);
sum[i] = sum[i-1]+road[i];
}
if(k>=n-1) { printf("0\n"); return 0;}
for(int i=1;i<=n-k;i++){
mins = min(sum[i-1]+sum[n-1]-sum[i+k-1],mins);
}
printf("%lld\n",mins);
return 0;
}