题意:给一个数列,再给一个数字p,要求p一定要替换掉数列中的一个元素,然后求最大连续子序列之和。
思路:1000*1000的复杂度,O(n*n) 。就是每个都试,然后求和。
#include <bits/stdc++.h>
#define LL long long
#define pii pair<int,int>
#define INF 0x7f7f7f7f
using namespace std;
const int N=;
int a[N]; int main()
{
freopen("e://input.txt", "r", stdin);
int n, p, t;
cin>>t;
while(t--)
{
scanf("%d %d",&n,&p);
for(int i=; i<n; i++) scanf("%d",&a[i]); LL ans=p, sum=;
for(int i=; i<n; i++)
{
//cout<<a[i]<<endl;
int tmp=a[i];
a[i]=p;
sum=;
for(int j=; j<n; j++)
{
sum+=a[j];
if(sum>ans) ans=sum;
if(sum<) sum=;
}
a[i]=tmp;
}
printf("%lld\n",ans);
}
return ;
}
AC代码