社区讨论
求大赏关
学术版参与者 4已保存回复 10
讨论操作
快速查看讨论及其快照的属性,并进行相关操作。
- 当前回复
- 10 条
- 当前快照
- 1 份
- 快照标识符
- @lo161ya3
- 此快照首次捕获于
- 2023/10/22 15:47 2 年前
- 此快照最后确认于
- 2023/11/02 15:22 2 年前
CPP
//思路:找出目前价值最大的字段,多退少补给所有字段的数+/-k,暴力
#include<bits/stdc++.h>
using namespace std;
#define int long long
const int M=2e5+5;
inline int read()
{
int f=1,k=0;
char c=getchar();//读入一个字符
//非数字
while(c<'0'||c>'9')//读到空格后
{
if(c=='-')f=-1;//读到负数
c=getchar();//两个功能:读取负号后面的数字或者读入空格等。
}
//数字
while(c>='0'&&c<='9')
{
k=(k<<1)+(k<<3)+(c^48);
c=getchar();//一位一位读入数字
}
return f*k;
}
int t;
signed main()
{
t=read();
while(t--)
{
int n=read(),k=read(),x=read(),a[M],sum[M]={0},ma[M]={0},ans=-1;
for(register int i=1;i<=n;i++)
{
a[i]=read();sum[i]=sum[i-1]+a[i];
}
for(register int i=1;i<=n;i++)//枚举长度
{
for(register int j=1;j<=n-i+1;j++)ma[i]=max(sum[i+j-1]-sum[i-1],ma[i]);
//枚举起点
int res;
if(x>=0)res=ma[i]+k*x-(i-k)*x;
else res=ma[i]+min(n-k,i)*(-x)+(i-min(n-k,i))*x;
ans=max(ans,res);
}
cout<<ans<<endl;
}
return 0;
}
无端无输出输入,卡了3分钟自动结束,求问是什么特性
回复
共 10 条回复,欢迎继续交流。
正在加载回复...