一行四个整数n,A,B,C(n≤100000,0≤A,B,C≤10000),其中n表示格子的数量。x[i]由如下方式生成:
for (int i = 1; i <= n; i++){
int tmp = ((long long)A * i * i + B * i + C) % 20000;
x[i] = tmp - 10000;
}
3 1 1 1
-9993
#include<bits/stdc++.h>
using namespace std;
int a[100100],dp[100100],n,i,ans;
int main(){
int A,B,C;
cin>>n>>A>>B>>C;
for (i = 1;i <=n ;i++) {
int tmp = ((long long)A * i * i + B * i + C) % 20000;
a[i] = tmp - 10000;
}
dp[1]=a[1];
dp[2]=max(a[2],a[1]+a[2]);
for (i = 3;i <= n;i++) {
dp[i]=max(dp[i-1],dp[i-2])+a[i];
}
ans=max(dp[n],dp[n-1]);
cout<<ans;
return 0;
}