zoukankan      html  css  js  c++  java
  • AC日记——琪露诺 洛谷 P1725

    琪露诺

    思路:

      单调队列+dp;

      然而劳资不会单调队列,所以,线段树水过;

    来,上代码:

    #include <cstdio>
    #include <cstring>
    #include <iostream>
    #include <algorithm>
    
    using namespace std;
    
    #define maxn 200005
    
    struct TreeNodeType {
        int l,r,dis,mid;
    };
    struct TreeNodeType tree[maxn<<2];
    
    int n,lit,rit,ai[maxn];
    
    inline void in(int &now)
    {
        int if_z=1;now=0;
        char Cget=getchar();
        while(Cget>'9'||Cget<'0')
        {
            if(Cget=='-') if_z=-1;
            Cget=getchar();
        }
        while(Cget>='0'&&Cget<='9')
        {
            now=now*10+Cget-'0';
            Cget=getchar();
        }
        now*=if_z;
    }
    
    inline void tree_build(int now,int l,int r)
    {
        tree[now].l=l,tree[now].r=r;
        if(l==r)
        {
            in(tree[now].dis);
            return ;
        }
        tree[now].mid=l+r>>1;
        tree_build(now<<1,l,tree[now].mid);
        tree_build(now<<1|1,tree[now].mid+1,r);
        tree[now].dis=max(tree[now<<1].dis,tree[now<<1|1].dis);
    }
    
    int tree_query(int now,int l,int r)
    {
        if(tree[now].l==l&&tree[now].r==r) return tree[now].dis;
        if(l>tree[now].mid) return tree_query(now<<1|1,l,r);
        else if(r<=tree[now].mid) return tree_query(now<<1,l,r);
        else return max(tree_query(now<<1,l,tree[now].mid),tree_query(now<<1|1,tree[now].mid+1,r));
    }
    
    void tree_add(int now,int to,int x)
    {
        if(tree[now].l==tree[now].r)
        {
            tree[now].dis+=x;
            return ;
        }
        if(to<=tree[now].mid) tree_add(now<<1,to,x);
        else tree_add(now<<1|1,to,x);
        tree[now].dis=max(tree[now<<1].dis,tree[now<<1|1].dis);
    }
    
    int main()
    {
        in(n),in(lit),in(rit);
        tree_build(1,0,n);
        for(int i=lit+1;i<=n;i++)
        {
            int l=i-rit,r=i-lit;
            if(r>=lit) tree_add(1,i,tree_query(1,max(l,lit),r));
        }
        cout<<tree_query(1,max(n-rit+1,lit),n);
        return 0;
    }
  • 相关阅读:
    APP调用微信支付
    怎么在腾讯云上部署项目
    Jfinal中使用redis
    Jfinal框架中使用WebSocket
    一道sql面试题
    git本地仓库上传到git远程仓库的指令
    怎么启动postsqlgres
    SpringMVC用List接收请求参数
    转发 电商面试题100问
    转--MyBatis-Plus代码自动生成工具
  • 原文地址:https://www.cnblogs.com/IUUUUUUUskyyy/p/6735468.html
Copyright © 2011-2022 走看看