(传送范围k,只能传一次)=(找出1-n之间长度为k的和最大片段
ans=(不传送直接走的步数)-(1-n之间长度为k的和最大片段)
想到这里就可以鉴定为种地题了:
AC源码 (抄代码指定没你好果汁吃
#include<bits/stdc++.h>
using namespace std;
const int maxn=1e6+5;
long long a[maxn],maxk=-1;
int n,k;
int main(){
memset(a,0,sizeof(a));
cin>>n>>k;
n--;
for(int i=1;i<=n;i++){
cin>>a[i];
a[i]+=a[i-1];
}
if(k==0){
cout<<a[n];
return 0;
}
for(int i=0;i<=n-k;i++){
maxk=max(a[k+i]-a[i],maxk);
}
cout<<a[n]-maxk;
return 0;
}
/*
⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⢀⣀⣤⣤⡶⢤⣄⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀
⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⢀⡴⠞⠛⠉⠁⠀⠀⠀⢹⡄⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀
⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠸⣿⡀⠀⣰⣶⣶⡄⠀⠀⣿⣀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀
⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⢻⣿⣿⣯⣤⠾⢗⣤⡾⠿⠛⠛⠷⢶⣄⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀
⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⢀⣠⡴⠞⠛⠉⣁⣽⣧⠀⢈⣿⠶⠶⢦⣄⡀⢀⣿⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀
⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⢀⣴⠟⠁⢀⣤⡶⠟⠛⠋⣹⣿⠿⢿⡄⠀⣠⣼⣤⡾⠃⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀
⠀⠀⠀⠀⠀⠀⠀⠀⠀⢀⣴⠟⠁⣠⡴⠟⠉⠀⠀⠀⣀⣹⣷⣶⣾⣧⣔⣿⡏⠉⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀
⠀⠀⠀⠀⠀⠀⠀⠀⠀⣾⠃⠀⣾⠋⠀⢀⣠⡤⠖⠛⠉⠉⠁⠀⠀⠀⠉⠉⠛⠳⢦⣤⡀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀
⠀⠀⠀⠀⠀⠀⠀⠀⠀⠛⠤⠤⠿⣶⠖⠋⠁⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠐⣮⡙⠒⠤⠤⠖⣧⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀
⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⡠⠊⠁⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⢀⠀⠀⠀⠘⣿⣦⣄⡀⠰⣇⣀⡀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀
⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⡰⠁⠀⠀⠀⠀⠀⠀⠀⣦⠀⠀⠀⠀⠀⠀⠀⠈⣷⣄⠀⠀⣿⣿⣿⣿⠃⠀⠉⠉⠉⣹⠁⠀⠀⠀⠀⠀⠀⠀
⠀⠀⠀⠀⠀⠀⠀⢀⣤⠾⠁⠀⠀⠀⠀⠀⠀⠀⡆⡏⢷⡀⠀⠀⠀⠀⠀⠀⢸⡈⣳⣮⡛⠻⣿⣿⡆⠀⠀⣠⡴⠃⠀⠀⠀⠀⠀⠀⠀⠀
⠀⠀⠀⠀⢤⡖⠚⠋⠁⠀⠀⠀⢀⠀⠀⠀⠀⢸⢰⠃⢀⡷⣶⠀⠀⠀⠀⠀⠀⣇⠀⠉⠻⣦⡈⠙⢷⠀⠘⣏⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀
⠀⠀⠀⠀⠀⠙⠲⣤⣀⣀⠀⢀⠎⠀⠀⠀⠀⢸⡟⠀⠈⠀⠈⠳⣦⣀⠀⠻⣶⣿⡄⠀⢀⣈⢳⡄⠀⠀⠀⠘⣆⠀⠀⠀⠀⠀⠀⠀⠀⠀
⠀⠀⠀⠀⠀⠀⠀⠀⣹⠃⠀⡼⠀⠀⠀⠀⠀⣾⠁⠀⢀⣤⣤⣄⠀⠉⠛⠓⠛⠀⠀⢰⣿⣿⣷⢻⡄⠀⠀⠀⢹⠀⠀⠀⠀⠀⠀⠀⠀⠀
⠀⠀⠀⠀⠀⠀⠀⣼⠃⠀⠀⡇⠀⠀⠀⠀⠀⢻⠀⠀⢿⣿⣿⡿⠀⠀⠀⠀⠀⠀⠀⠈⠛⠛⠋⠀⢿⡀⠀⠀⠀⣇⠀⠀⠀⠀⠀⠀⠀⠀
⠀⠀⠀⠀⠀⠀⢠⡏⠀⠀⢸⠀⠀⠀⠀⠀⠀⢸⡄⠀⠀⠙⠋⠀⠀⠠⣀⡀⠀⠀⠀⠂⠀⠀⠀⠀⠘⣿⠀⠀⠀⢻⠀⠀⠀⠀⠀⠀⠀⠀
⠀⠀⠀⠀⠀⠀⢸⡇⠀⠀⣸⠀⠀⠀⠀⠀⠀⢸⡇⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⣠⠏⠀⠀⠀⢸⡇⠀⠀⠀⠀⠀⠀⠀
⠀⠀⠀⠀⠀⠀⢸⡇⠀⠀⣿⠀⠀⠀⠀⠀⠀⠀⣿⠀⠀⠀⠀⠀⠀⠀⠀⢀⣀⣀⣀⣀⣀⣠⣴⣞⢻⠀⠀⠀⠀⠀⣧⠀⠀⠀⠀⠀⠀⠀
⠀⠀⠀⠀⠀⠀⠘⣇⠀⠀⢹⠀⠀⠀⠀⠀⠀⠀⠸⣶⣤⣤⣤⣶⣶⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⠀⠀⡄⠀⢰⣿⠀⠀⠀⠀⠀⠀⠀
⠀⠀⠀⠀⠀⠀⠀⢻⣆⠀⠘⣇⠀⠀⠀⠀⠀⠀⠀⢻⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣟⣁⣤⣾⠀⠀⣸⡏⠀⠀⠀⠀⠀⠀⠀
⠀⠀⠀⠀⠀⠀⠀⠀⠹⢦⣄⠙⢦⡀⠀⠀⢺⣤⣀⠀⠻⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⡿⠋⠀⣠⠏⠀⠀⠀⠀⠀⠀⠀⠀
⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠙⠻⠶⣿⠷⢲⣴⣿⣿⣿⣶⣾⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⡿⠟⢻⠗⠒⠚⠁⠀⠀⠀⠀⠀⠀⠀⠀⠀
⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⣰⣿⣿⣿⣿⣿⣿⣿⣿⣿⡛⠛⠿⠿⠿⠿⠿⠟⠛⠉⠀⠀⠀⢷⡀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀
⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⢀⣤⣾⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⡇⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠈⢷⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀
*/