zoukankan      html  css  js  c++  java
  • Glider Gym

    没一个x降1个y 所以对于高度H 不在上升区最多走在x方向走H

    a[]存上升区的前缀和

    b[]存非上升区的前缀和

    对于每个b[i]+h二分查找对应的点;

    a[pos-1]-a[i-1]就是其经过的上升区的长度

    维护最大值

    ans+H 即为答案

    #include<bits/stdc++.h>
    
    #define mem(a,b) memset(a,b,sizeof(a))
    #define sc(x) scanf("%lld",&(x))
    #define inf 0x3f3f3f3f
    #define ll long long
    #define int long long
    
    using namespace std;
    
    const int maxn=2e5+10;
    
    struct node{
        int l,r;
    }e[maxn];
    
    int a[maxn],b[maxn];
    
    #undef int
    int main()
    {
    #define int long long
        int n,h;
        sc(n),sc(h);
        e[0].r=0;
        int l,r;
        cin>>l>>r;
        e[1]=(node){l,r};
        a[1]=r-l;
        b[1]=0;
        for(int i=2;i<=n;i++)
        {
            sc(l),sc(r);
            a[i]=a[i-1]+r-l;
            b[i]=b[i-1]+l-e[i-1].r;
            e[i]=(node){l,r};
        }
        b[n+1]=inf;
        int ans=0;
        for(int i=1;i<=n;i++)
        {
            int pos=lower_bound(b+1,b+1+n,b[i]+h)-b;
            ans=max(ans,a[pos-1]-a[i-1]);
        }
        cout<<ans+h<<endl;
        return 0;
    }
  • 相关阅读:
    hibernate入门
    struts文件上传
    Struts的增删改查
    struts入门
    Maven配置以及环境搭配
    layui增删改查
    easyui三
    A
    C. Permutation Cycle
    E
  • 原文地址:https://www.cnblogs.com/minun/p/11282255.html
Copyright © 2011-2022 走看看