2442: [Usaco2011 Open]修剪草坪

来源:互联网 发布:手机格式化后数据恢复 编辑:程序博客网 时间:2024/06/02 11:40
#include<cstdio>#include<cstring>#include<cmath>#include<iostream>#include<cstdlib>#define ll long long#define inf 99999999999999LLusing namespace std;int n,m,q[100002];ll a[100002],sum,f[100002],mins=inf;void dp(){int t=0,w=0;for(int i=1;i<=n;i++)       {f[i]=a[i]+f[q[t]];        while(f[q[w]]>f[i]&&t<=w) w--;        q[++w]=i;        while(q[t]<i-m) t++;       }}int main(){scanf("%d%d",&n,&m);for(int i=1;i<=n;i++)   {scanf("%lld",&a[i]); sum+=a[i];}dp();for(int i=n-m;i<=n;i++) mins=min(mins,f[i]);printf("%lld",sum-mins);return 0;}

0 0