[HEOI2014]南园满地堆轻絮

题解:
答案就是差距最大的逆序对的一半,因为两个数都减小一半就可以了。
时间复杂度O(n)

/*Keep on going Never give up*/
//#pragma GCC optimize(3,"Ofast","inline")
#include <iostream>
#include <cstdio>
#include <stdlib.h>
#include <cstring>
#include <cmath>
#include <math.h>
#include <string>
#include<string.h>
#include <list>
#include <set>
#include <unordered_map>
#include <queue>
#include <stack>
#include <algorithm>
#include <stdlib.h>
#include <vector>
#include <cctype>
#include<iomanip>
#define int long long
#define endl '\n'
using namespace std;
const int maxn = 1e6+10;
const int MaxN = 0x3f3f3f3f;
const int MinN = 0xc0c0c00c;
typedef long long ll;
const ll mod= 199999;
using namespace std;
int n,a,b,c,d;
int arr[5000001];
int mmd,ans;
int F(int x){
    return ((((((a*x)%mmd*x)%mmd*x)%mmd+(b*x%mmd)*x%mmd)%mmd+(c*x)%mmd)%mmd+d)%mmd;
}

signed main(){

    cin>>n>>a>>b>>c>>d>>arr[1]>>mmd;
    int imax=arr[1];
    for(int i=2;i<=n;i++){
        arr[i]=(F(arr[i-1])+F(arr[i-2]))%mmd;
        ans=max(ans,imax-arr[i]);
        imax=max(imax,arr[i]);
    }
    cout<<(ans+1)/2<<endl;
    return 0;
}



题解 文章被收录于专栏

主要写一些题目的题解

全部评论
%%%%%%%%%%
点赞 回复 分享
发布于 2020-08-31 15:13

相关推荐

10-14 23:01
已编辑
中国地质大学(武汉) Java
CUG芝士圈:虽然是网上的项目,但最好还是包装一下,然后现在大部分公司都在忙校招,十月底、十一月初会好找一些。最后,boss才沟通100家,别焦虑,我去年暑假找第一段实习的时候沟通了500➕才有面试,校友加油
点赞 评论 收藏
分享
1 收藏 评论
分享
牛客网
牛客企业服务