思路:
李超线段树裸题

//By SiriusRen
#include <cmath>
#include <cstdio>
#include <cstring>
#include <algorithm>
using namespace std;
#define N 100050
int n,t;char op[10];
struct Tree{double s,p;}tr[N*8];
void insert(int l,int r,int pos,double s,double p){int mid=(l+r)>>1,lson=pos<<1,rson=pos<<1|1;if(tr[pos].s==0&&tr[pos].p==0){tr[pos].s=s,tr[pos].p=p;return;}double val1=tr[pos].s+(mid-1.0)*tr[pos].p;double val2=s+(mid-1.0)*p;if(l==r){if(val2>val1)tr[pos].s=s,tr[pos].p=p;}else if(tr[pos].p==p)tr[pos].s=max(tr[pos].s,s);else if(tr[pos].p>p){if(val1>=val2)insert(l,mid,lson,s,p);else insert(mid+1,r,rson,tr[pos].s,tr[pos].p),tr[pos].s=s,tr[pos].p=p;}else{if(val1>=val2)insert(mid+1,r,rson,s,p);else insert(l,mid,lson,tr[pos].s,tr[pos].p),tr[pos].s=s,tr[pos].p=p;}
}
double query(int l,int r,int pos,int x){int mid=(l+r)>>1,lson=pos<<1,rson=pos<<1|1;double ans=max(0.0,tr[pos].s+(x-1.0)*tr[pos].p);if(l==r)return ans;if(x<=mid)ans=max(ans,query(l,mid,lson,x));else ans=max(ans,query(mid+1,r,rson,x));return ans;
}
int main(){scanf("%d",&n);for(int i=1;i<=n;i++){scanf("%s",op);if(op[0]=='Q'){scanf("%d",&t);printf("%d\n",((int)query(1,50000,1,t))/100);}else if(op[0]=='P'){double s,p;scanf("%lf%lf",&s,&p);insert(1,50000,1,s,p);}}
}

转载于:https://www.cnblogs.com/SiriusRen/p/6532075.html

BZOJ 1568 李超线段树相关推荐

  1. BZOJ 3165 李超线段树

    思路: 李超线段树 我是把线段转成斜率的形式搞得 不知道有没有更简单的方法 //By SiriusRen #include <cmath> #include <cstdio> ...

  2. BZOJ.3938.Robot(李超线段树)

    BZOJ UOJ 以时间\(t\)为横坐标,位置\(p\)为纵坐标建坐标系,那每个机器人就是一条\(0\sim INF\)的折线. 用李超线段树维护最大最小值.对于折线分成若干条线段依次插入即可. 最 ...

  3. 【BZOJ 3165】 [Heoi2013]Segment 李超线段树

    所谓李超线段树就是解决此题一类的问题(线段覆盖查询点最大(小)),把原本计算几何的题目变成了简单的线段树,巧妙地结合了线段树的标记永久化与标记下传,在不考虑精度误差的影响下,打法应该是这样的. #in ...

  4. 【BZOJ1568】【Tyvj3490】Blue Mary开公司 李超线段树

    Time:2016.08.02 Author:xiaoyimi 转载注明出处谢谢 传送门1 传送门2 思路: 题意大致为 维护有斜率和截距的若干直线,并求直线x=T(T∈N)与当前已加入直线交点的ym ...

  5. 李超线段树(Li-Chao Segment Tree)

    李超线段树 李超线段树是一种用于维护平面直角坐标系内线段关系的数据结构.它常被用来处理这样一种形式的问题:给定一个平面直角坐标系,支持动态插入一条线段,询问从某一个位置 (X,+∞)(X,+\inft ...

  6. Luogu P1198 BZOJ 1012 最大数 (线段树)

    Luogu P1198 BZOJ 1012 最大数 (线段树) 手动博客搬家: 本文发表于20170821 14:32:05, 原地址https://blog.csdn.net/suncongbo/a ...

  7. P4097 [HEOI2013]Segment 李超线段树

    传送门 文章目录 题意: 思路: 题意: 实现以下两个操作: (1)(1)(1)在平面上加入一条线段.记第iii条被插入的线段的标号为iii (2)(2)(2)给定一个数kkk,询问与直线x=kx=k ...

  8. 【牛客NOIP模拟】 牛牛的RPG游戏【二维偏序】【任意坐标斜率优化】【CDQ 分治】【李超线段树】

    题意: n×mn\times mn×m 的网格图,每个点有两个权值 vali,j,bufi,jval_{i,j},buf_{i,j}vali,j​,bufi,j​,从 (1,1)(1,1)(1,1) ...

  9. 【CEOI2017】Building Bridges【任意坐标斜率优化】【李超线段树】

    题意:有 nnn 个柱子,每个柱子有高度 hih_ihi​.你需要在柱子间修桥,在 i,ji,ji,j 间修桥代价为 (hi−hj)2(h_i-h_j)^2(hi​−hj​)2,桥梁只能在柱子处相交, ...

最新文章

  1. 反垃圾邮件,需要全面了解各种方案
  2. [C++11]final关键字的使用
  3. Order By后产生NULL的问题
  4. 机器学习(一):数据预处理
  5. 哈佛大学凌晨4点半的景象
  6. atitit.Servlet2.5 Servlet 3.0 新特性 jsp2.0 jsp2.1 jsp2.2新特性
  7. 数据分析Power BI案例:产品与客户销售数据分析
  8. 生命在于学习——密码暴力破解
  9. java里this.a=a,JAVA基础-关键字之this
  10. 高级Java程序员必备:《IDEA问题库》常见问题及解决方案,提升开发效率(JAVA 小虚竹)
  11. 6.MySQL中文排序(根据拼音排序)
  12. 网络适配器出现黄色感叹号!,错误代码56
  13. 吴军推荐给中学生的书单
  14. 云服务器怎么配置cpu与内存搭配
  15. 聊聊我的 Pandas 学习经历及动手实践
  16. PostWoman(网页调试工具)
  17. UVA340紫外线灯管
  18. Mac OS下安装串口调试工具minicom
  19. 《永不止步》--[奥]力克胡哲
  20. 分析QQ微信使用的是UDP还是TCP协议

热门文章

  1. “实模式--保护模式--实模式”转换过程
  2. 段寄存器和8种地址寻址方式
  3. Android学习:自定义ViewGroup方法总结
  4. 三栏布局(两边固定,中间自适应)
  5. 使用commandfield删除、修改gridview
  6. asp.net TemplateField模板中的Bind方法和Eval方法
  7. 小众编程语言同样值得你关注
  8. tcp建立连接的时的几种状态
  9. MySQL笔记12:C语言访问MYSQL数据库的完整的代码例子
  10. 类与类之间的交互关系