一行四个整数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; }