Maximize The Beautiful Value (前缀和&贪心)
题意:给定长度为n不递减序列,求操作一次使其F[n]最大。
#include<bits/stdc++.h>
using namespace std;
typedef long long ll;
const int N=1e5+5;
ll a[N],pre[N];
int main(){
int t;
cin>>t;
while(t--){
ll n,k,ans=0,mx=-1e15;
cin>>n>>k;
for(int i=1;i<=n;i++) cin>>a[i],ans+=a[i]*i;
for(int i=1;i<=n;i++) pre[i]=pre[i-1]+a[i];
for(int i=k+1;i<=n;i++)
{
if(pre[i-1]-pre[i-k-1]-a[i]*k>mx){
mx=max(mx,pre[i-1]-pre[i-k-1]-a[i]*k);
}
}
cout<<ans+mx<<endl;
}
return 0;
}