BZOJ3613 [Heoi2014]南园满地堆轻絮

来源:互联网 发布:淘宝助理6.0 官方 编辑:程序博客网 时间:2024/05/15 23:46

发现答案是最大的(a[i]-a[j]+1)/2满足i<j

想想的话好像还挺显然的

#include<iostream>#include<cstdio>#include<cstdlib>#include<cstring>#include<ctime>#include<cmath>#include<algorithm>#include<iomanip>#include<vector>#include<map>#include<set>#include<bitset>#include<queue>#include<stack>using namespace std;#define MAXN 5000010#define MAXM 1010#define INF 1000000000#define MOD 1000000007#define eps 1e-8#define ll long longint n;ll sa,sb,sc,sd,mod;ll a[MAXN];ll ans;ll mx;int main(){int i;scanf("%d%lld%lld%lld%lld%lld%lld",&n,&sa,&sb,&sc,&sd,&a[1],&mod);mx=a[1];for(i=2;i<=n;i++){a[i]=(sd+a[i-1]*(sc+a[i-1]*(sb+a[i-1]*sa%mod)%mod)%mod)%mod;(a[i]+=(sd+a[i-2]*(sc+a[i-2]*(sb+a[i-2]*sa%mod)%mod)%mod)%mod)%=mod;mx=max(mx,a[i]);ans=max(ans,(mx-a[i]+1)/2);}printf("%lld\n",ans);return 0;}/**/


0 0
原创粉丝点击