2. 小贝薅羊毛
题目ID:15669必做题100分
最新提交:
Wrong Answer
10 分
历史最高:
Wrong Answer
10 分
时间限制: 1000ms
空间限制: 524288kB
题目描述
618 商品大促即将到来,又到了小贝薅羊毛的时间!
商品界面一共有 n 件商品,手机界面仅显示 连续 的 m 件商品,为了薅羊毛,小贝会把手机界面显示的商品 都买下来。每件商品都有一个幸福值 pi,表示小贝买了这件商品之后会提升的幸福感。
但是小贝的手机出了点问题,商品页面 只能往下滑,不能往上滑。并且小贝是一个追求新鲜感的人,任何商品只会买一次。也就是说,每次购买商品时,页面中的商品都是之前没买过的。
小贝一共会薅 k 次羊毛,问:薅完羊毛之后小贝的幸福感最大是多少?
输入格式
第 1 行读入 3 个整数 n,m,k
第 2 行读入n 个数 1,2,…,p1,p2,…,pn
1≤(×)≤50001≤(m×k)≤n≤5000,0≤1090≤pi≤109
输出格式
输出 11 个整数,代表可以取到的最大值
样例输入1
5 2 1
1 2 3 4 5
样例输出1
9
样例输入2
7 1 3
2 10 7 18 5 33 0
样例输出2
61
code(WA)
#include<bits/stdc++.h>
using namespace std;
long long a[114514],sum[114514],n,m,t,ans;
int main(){
scanf("%d%d%d",&n,&m,&t);
for(long long i=1;i<=n;i++){
cin>>a[i];
sum[i]=sum[i-1]+a[i];
}
long long maxx=-0x3f3f3f3f;
for(long long i=m;i<=n;i++){
if(sum[i]-sum[i-m]>maxx){
maxx=sum[i]-sum[i-m];
}
}
ans+=maxx;
t-=1;
while(t--){
long long ws=0;
for(long long i=1;i<=n;i++){
if(a[i]==0)continue;
sum[ws+1]=sum[ws]+a[i];
ws++;
}
long long maxx=-0x3f3f3f3f;
for(long long i=m;i<=n;i++){
if(sum[i]-sum[i-m]>maxx){
maxx=sum[i]-sum[i-m];
}
}
ans+=maxx;
}
cout<<ans;
return 0;
}