分析

区间李超树板子题

代码

#include<bits/stdc++.h>
using namespace std;
#define db double
const int inf = 1e8;
const int N = 1e5;
int n,m,is;
struct node {
int x1,x2;
db y1,y2;
node(int x1=-N,int x2=N,db y1=-1e8,db y2=-1e8):x1(x1),x2(x2),y1(y1),y2(y2) {}
};
node d[];
inline db calc(node x,int pl){
if(x.x2==x.x1)return max(x.y1,x.y2);
return x.y1+(db)(x.y2-x.y1)/(x.x2-x.x1)*(pl-x.x1);
}
inline void update(int le,int ri,int wh,node x){
if(x.x1>ri||x.x2<le)return;
int mid=(le+ri)>>;
if(x.x1<=le&&x.x2>=ri){
db t1=calc(d[wh],mid),t2=calc(x,mid);
if(t1<t2){
if(calc(d[wh],le)>calc(x,le))update(le,mid,wh<<,d[wh]);
if(calc(d[wh],ri)>calc(x,ri))update(mid+,ri,wh<<|,d[wh]);
d[wh]=x;
}else {
if(calc(x,le)>calc(d[wh],le))update(le,mid,wh<<,x);
if(calc(x,ri)>calc(d[wh],ri))update(mid+,ri,wh<<|,x);
}
return;
}
if(mid>=x.x1)update(le,mid,wh<<,x);
if(mid<x.x2)update(mid+,ri,wh<<|,x);
return;
}
inline db q(int le,int ri,int wh,int pl){
if(le==ri)return calc(d[wh],pl);
int mid=(le+ri)>>;
db ans=calc(d[wh],pl);
if(mid>=pl)ans=max(ans,q(le,mid,wh<<,pl));
else ans=max(ans,q(mid+,ri,wh<<|,pl));
return ans;
}
int main(){
int i,j,k;
scanf("%d%d",&n,&m);
for(i=;i<=n;i++){
int x1,x2,y1,y2;
cin>>x1>>y1>>x2>>y2;
if(x1>x2)swap(x1,x2),swap(y1,y2);
update(,N,,node(x1,x2,y1,y2));
}
for(i=;i<=m;i++){
scanf("%d",&k);
if(!k){
int x1,x2,y1,y2;
cin>>x1>>y1>>x2>>y2;
if(x1>x2)swap(x1,x2),swap(y1,y2);
update(,N,,node(x1,x2,y1,y2));
}else {
int x;scanf("%d",&x);
db res=q(,N,,x);
printf("%0.2lf\n",res<=-inf?:res);
}
}
return ;
}

最新文章

  1. js获取url以及截取后边所带参数
  2. jquery.fullPage.js全屏滚动插件教程演示
  3. usb驱动开发7之接口描述符
  4. [转] linux中巧用ctrl-z后台运行程序
  5. setSelection()和requestFocusFromTouch()
  6. Scala下载安装配置(Mac)
  7. Snapchat
  8. Javascript与Ajax
  9. AMAZON PRICE TRACKER, AMAZON PRICE HISTORY, AMAZON PRICE DROP ALERT | DROPGG.COM
  10. T-SQL 基于关系分割字符串
  11. CodeForces 702D Road to Post Office
  12. 快速掌握Shell编程
  13. [BZOJ2654] tree (kruskal &amp; 二分答案)
  14. 微信小程序用户信息解密失败导致的内存泄漏问题。
  15. ansible学习基础知识和模块(一)
  16. LIS的O(nlogn)算法
  17. [转]再识Cortex-M3之堆栈
  18. 解决python中 .to_csv() 的乱码问题
  19. Eclipse无法编译,提示错误“找不到或者无法加载主类”解决方法
  20. 2018蓝桥杯 全球变暖(dfs)

热门文章

  1. C# 从集合A中取出集合B中不包含的数据(根据ID判断),并添加到集合B中
  2. 11.AutoMapper 之值转换器(Value Transformers)
  3. 一分钟理解sdk
  4. springboot热部署设置
  5. docker之本地连接
  6. 目标检测数据库 PASCAL 格式的 Ground Truth 的解析函数
  7. C++线程同步 -- windows
  8. 十一、S3C2440 裸机 — GPIO
  9. git学习补充
  10. EEPROM类库的使用---断电不丢失的存储芯片