• [模板][李超线段树][JSOI 2008] Blue Mary开公司


    题目大意

    每次给整个区间内加入一个一次函数,求单点最大值。

    Code

    #include <iostream>
    #include <algorithm>
    #include <cstring>
    #include <cstdio>
    using namespace std;
    
    #define RG register int
    #define LL long long
    
    const int Index=50010;
    double k[100010],b[100010];
    int SegTree[200010];
    int N,Num=0;
    
    inline double f(int ID,int x){return k[ID]*(x-1)+b[ID];}
    
    void Update(int Root,int L,int R,int ID){
        if(L==R){
            if(f(ID,L)>f(SegTree[Root],L))
                SegTree[Root]=ID;
            return;
        }
        int mid=(L+R)>>1;
        if(k[ID]>k[SegTree[Root]]){
            if(f(ID,mid)>f(SegTree[Root],mid)){
                Update(Root<<1,L,mid,SegTree[Root]);
                SegTree[Root]=ID;
            }
            else Update(Root<<1|1,mid+1,R,ID);
        }
        else if(k[ID]<k[SegTree[Root]]){
            if(f(ID,mid)>f(SegTree[Root],mid)){
                Update(Root<<1|1,mid+1,R,SegTree[Root]);
                SegTree[Root]=ID;
            }
            else Update(Root<<1,L,mid,ID);
        }
        return;
    }
    
    double Query(int Root,int L,int R,int x){
        if(L==R) return f(SegTree[Root],x);
        int mid=(L+R)>>1;
        if(x<=mid) return max(f(SegTree[Root],x),Query(Root<<1,L,mid,x));
        return max(f(SegTree[Root],x),Query(Root<<1|1,mid+1,R,x));
    }
    
    int main(){
        char opt[20];
        scanf("%d",&N);
        for(RG i=1;i<=N;++i){
            scanf("%s",opt);
            if(opt[0]=='Q'){
                int x;scanf("%d",&x);
                printf("%d
    ",(int)(Query(1,1,Index,x)/100.0));
            }
            else{
                ++Num;
                scanf("%lf%lf",&b[Num],&k[Num]);
                Update(1,1,Index,Num);
            }
        }
        return 0;
    }
    
  • 相关阅读:
    Thymeleaf介绍和基本语法使用
    2020版idea及没有default Settings设置的idea,修改默认maven设置、本地仓库的方法
    创建springboot项目的两种方式
    2020版IDEA新建打开*.vue文件
    IDEA新手常用快捷键
    搭建一个maven的web项目
    eclipse、idea引入外部jar包教程
    序列化笔记
    转换流笔记
    缓冲流笔记
  • 原文地址:https://www.cnblogs.com/AEMShana/p/12334713.html
Copyright © 2020-2023  润新知