# 題目
AP325 P-6-13. 周伯通的基地台 (@@)
# 解題思路
目前沒東西...
# 程式碼
#include<bits/stdc++.h> | |
using namespace std; | |
#define N 2000005 | |
deque<int> min_d; | |
int a[N]; | |
long long dp[N]; | |
void put_min(int i){ | |
while(min_d.size()!=0 && dp[min_d.back()]>=dp[i]) | |
min_d.pop_back(); | |
min_d.push_back(i); | |
} | |
int main(){ | |
int n,k; | |
cin>>n>>k; | |
for(int i=0;i<n;i++) | |
cin>>a[i]; | |
dp[0]=a[0]; | |
put_min(0); | |
for(int i=1;i<=k;i++){ | |
dp[i]=a[i]; | |
put_min(i); | |
} | |
for(int i=k+1;i<n;i++){ | |
if(min_d.front()<=i-2*k-2) | |
min_d.pop_front(); | |
dp[i]=dp[min_d.front()]+a[i]; | |
put_min(i); | |
} | |
while(min_d.front()<=n-2-k) | |
min_d.pop_front(); | |
cout<<dp[min_d.front()]; | |
return 0; | |
} |