【每日一题】南园满地堆轻絮

[HEOI2014]南园满地堆轻絮

https://ac.nowcoder.com/acm/problem/20012

题意:


思路:







#include <cstdio>
#include <algorithm>
using namespace std;
const int N = 5e6 + 10;
int n;
int S_a,S_b,S_c,S_d,mod,mx;
int a[N];
bool check(int k){
    int b = a[1] - k;//越小越好
    for(int i = 2;i <= n;i++){
        if(a[i] >= b){
            b = max(a[i] - k,b);
        }else if(a[i] + k < b) return 0;
    } 
    return 1;
}
int f(int x){
    int x_a = 1ll * S_a * x % mod * x % mod* x % mod;
    int x_b = 1ll * S_b * x % mod * x % mod;
    int x_c = 1ll * S_c * x % mod;
    int x_d = S_d % mod;
    return (((x_a + x_b)%mod + x_c) % mod + x_d) % mod; 
}
int main(){
    scanf("%d %d %d %d %d %d %d",&n,&S_a,&S_b,&S_c,&S_d,&a[1],&mod);
    mx = a[1];
    for(int i = 2;i <= n;i++){
        a[i] = (f(a[i - 1]) + f(a[i - 2])) % mod;
        mx = max(mx,a[i]);
    }
    int l = 0,r = mx,ans = -1;
    while(l <= r){
        int mid = l + r >> 1;
        if(check(mid)){
            r = mid - 1;
            ans = mid;
        }else l = mid + 1;
    } 
    printf("%d\n",ans);
    return 0;
}
每日一题 文章被收录于专栏

每题一题题目

全部评论

相关推荐

10-09 00:50
已编辑
长江大学 算法工程师
不期而遇的夏天:1.同学你面试评价不错,概率很大,请耐心等待;2.你的排名比较靠前,不要担心,耐心等待;3.问题不大,正在审批,不要着急签其他公司,等等我们!4.预计9月中下旬,安心过节;5.下周会有结果,请耐心等待下;6.可能国庆节前后,一有结果我马上通知你;7.预计10月中旬,再坚持一下;8.正在走流程,就这两天了;9.同学,结果我也不知道,你如果查到了也告诉我一声;10.同学你出线不明朗,建议签其他公司保底!11.同学你找了哪些公司,我也在找工作。
点赞 评论 收藏
分享
我见java多妩媚:大外包
点赞 评论 收藏
分享
点赞 收藏 评论
分享
牛客网
牛客企业服务