BZOJ 1568 李超线段树
思路:
李超线段树裸题
//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 李超线段树相关推荐
- BZOJ 3165 李超线段树
思路: 李超线段树 我是把线段转成斜率的形式搞得 不知道有没有更简单的方法 //By SiriusRen #include <cmath> #include <cstdio> ...
- BZOJ.3938.Robot(李超线段树)
BZOJ UOJ 以时间\(t\)为横坐标,位置\(p\)为纵坐标建坐标系,那每个机器人就是一条\(0\sim INF\)的折线. 用李超线段树维护最大最小值.对于折线分成若干条线段依次插入即可. 最 ...
- 【BZOJ 3165】 [Heoi2013]Segment 李超线段树
所谓李超线段树就是解决此题一类的问题(线段覆盖查询点最大(小)),把原本计算几何的题目变成了简单的线段树,巧妙地结合了线段树的标记永久化与标记下传,在不考虑精度误差的影响下,打法应该是这样的. #in ...
- 【BZOJ1568】【Tyvj3490】Blue Mary开公司 李超线段树
Time:2016.08.02 Author:xiaoyimi 转载注明出处谢谢 传送门1 传送门2 思路: 题意大致为 维护有斜率和截距的若干直线,并求直线x=T(T∈N)与当前已加入直线交点的ym ...
- 李超线段树(Li-Chao Segment Tree)
李超线段树 李超线段树是一种用于维护平面直角坐标系内线段关系的数据结构.它常被用来处理这样一种形式的问题:给定一个平面直角坐标系,支持动态插入一条线段,询问从某一个位置 (X,+∞)(X,+\inft ...
- Luogu P1198 BZOJ 1012 最大数 (线段树)
Luogu P1198 BZOJ 1012 最大数 (线段树) 手动博客搬家: 本文发表于20170821 14:32:05, 原地址https://blog.csdn.net/suncongbo/a ...
- P4097 [HEOI2013]Segment 李超线段树
传送门 文章目录 题意: 思路: 题意: 实现以下两个操作: (1)(1)(1)在平面上加入一条线段.记第iii条被插入的线段的标号为iii (2)(2)(2)给定一个数kkk,询问与直线x=kx=k ...
- 【牛客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) ...
- 【CEOI2017】Building Bridges【任意坐标斜率优化】【李超线段树】
题意:有 nnn 个柱子,每个柱子有高度 hih_ihi.你需要在柱子间修桥,在 i,ji,ji,j 间修桥代价为 (hi−hj)2(h_i-h_j)^2(hi−hj)2,桥梁只能在柱子处相交, ...
最新文章
- 反垃圾邮件,需要全面了解各种方案
- [C++11]final关键字的使用
- Order By后产生NULL的问题
- 机器学习(一):数据预处理
- 哈佛大学凌晨4点半的景象
- atitit.Servlet2.5 Servlet 3.0 新特性 jsp2.0 jsp2.1 jsp2.2新特性
- 数据分析Power BI案例:产品与客户销售数据分析
- 生命在于学习——密码暴力破解
- java里this.a=a,JAVA基础-关键字之this
- 高级Java程序员必备:《IDEA问题库》常见问题及解决方案,提升开发效率(JAVA 小虚竹)
- 6.MySQL中文排序(根据拼音排序)
- 网络适配器出现黄色感叹号!,错误代码56
- 吴军推荐给中学生的书单
- 云服务器怎么配置cpu与内存搭配
- 聊聊我的 Pandas 学习经历及动手实践
- PostWoman(网页调试工具)
- UVA340紫外线灯管
- Mac OS下安装串口调试工具minicom
- 《永不止步》--[奥]力克胡哲
- 分析QQ微信使用的是UDP还是TCP协议