題目:BZOJ3613
解析:
找規律?結論題?
被大佬點撥後就變成傻逼題了。。。
容易發現 改動最大的最小爲逆序對中差值最大的一半,然後就沒有然後了。。。
代碼:
#include <bits/stdc++.h>
#define int long long
using namespace std;
const int Max=5000005;
int n,Sa,Sb,Sc,Sd,mod;
int ans,maxx,num[Max];
inline int f(int id)
{
return (Sa*num[id]%mod*num[id]%mod*num[id]%mod+Sb*num[id]%mod*num[id]%mod+Sc*num[id]%mod+Sd)%mod;
}
signed main()
{
cin>>n>>Sa>>Sb>>Sc>>Sd>>num[1]>>mod;maxx=num[1];
for(int i=2;i<=n;i++)
{
num[i]=(f(i-1)+f(i-2))%mod;
ans=max(maxx-num[i],ans);
maxx=max(maxx,num[i]);
}
cout<<(ans+1)/2;
return 0;
}