分析

区间李超树板子题

代码

#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 ;
}

loj#6034 「雅礼集训 2017 Day2」线段游戏的更多相关文章

  1. #6034. 「雅礼集训 2017 Day2」线段游戏 李超树

    #6034. 「雅礼集训 2017 Day2」线段游戏 内存限制:256 MiB时间限制:1000 ms标准输入输出 题目类型:传统评测方式:Special Judge 上传者: 匿名 提交提交记录统 ...

  2. 【loj6034】「雅礼集训 2017 Day2」线段游戏

    #6034. 「雅礼集训 2017 Day2」线段游戏 内存限制:256 MiB 时间限制:1000 ms 标准输入输出 题目类型:传统 评测方式:Special Judge 上传者: 匿名 题目描述 ...

  3. 「雅礼集训 2017 Day2」线段游戏(线段树懒标记“启发式下传”,李超树)

    题面 题解 加入一条线段,可以把它转化为在[L,R]区间内加一条线 y=ax+b (如果原线段与y轴平行,就相当于在{x1}处加一条线 y=max(y1,y2)) 我们可以把它加到线段树上,线段树上每 ...

  4. loj#6033. 「雅礼集训 2017 Day2」棋盘游戏(二分图博弈)

    题意 链接 Sol 第一次做在二分图上博弈的题..感觉思路真是清奇.. 首先将图黑白染色. 对于某个点,若它一定在最大匹配上,那么Bob必胜.因为Bob可以一直沿着匹配边都,Alice只能走非匹配边. ...

  5. loj#6032. 「雅礼集训 2017 Day2」水箱(并查集 贪心 扫描线)

    题意 链接 Sol 神仙题+神仙做法%%%%%%%% 我再来复述一遍.. 首先按照\(y\)坐标排序,然后维护一个扫描线从低处往高处考虑. 一个连通块的内状态使用两个变量即可维护\(ans\)表示联通 ...

  6. [LOJ#6033]. 「雅礼集训 2017 Day2」棋盘游戏[二分图博弈、匈牙利算法]

    题意 题目链接 分析 二分图博弈经典模型,首先将棋盘二分图染色. 考虑在某个最大匹配中: 如果存在完美匹配则先手必败,因为先手选定的任何一个起点都在完美匹配中,而后手则只需要走这个点的匹配点,然后先手 ...

  7. LOJ#6032. 「雅礼集训 2017 Day2」水箱

    传送门 首先可以有一个平方复杂度的 \(DP\) 设 \(f_{i,j}\) 表示前面 \(i\) 个小格,高度为 \(j\) 的最大答案 令 \(h_i\) 表示隔板 \(i\) 的高度 当 \(j ...

  8. loj #6032. 「雅礼集训 2017 Day2」水箱 线段树优化DP转移

    $ \color{#0066ff}{ 题目描述 }$ 给出一个长度为 \(n\) 宽度为 \(1\) ,高度无限的水箱,有 \(n-1\) 个挡板将其分为 \(n\) 个 \(1 - 1\) 的小格, ...

  9. 「雅礼集训 2017 Day2」解题报告

    「雅礼集训 2017 Day2」水箱 我怎么知道这种题目都能构造树形结构. 根据高度构造一棵树,在树上倍增找到最大的小于约束条件高度的隔板,开一个 \(vector\) 记录一下,然后对于每个 \(v ...

随机推荐

  1. 企业面试题|最常问的MySQL面试题集合(一)

    问题1:char.varchar的区别是什么?varchar是变长而char的长度是固定的.如果你的内容是固定大小的,你会得到更好的性能. 问题2: TRUNCATE和DELETE的区别是什么?DEL ...

  2. TCP的三次握手与四次挥手理解及面试题

    TCP的三次握手与四次挥手理解及面试题(很全面) 转载自:https://blog.csdn.net/qq_38950316/article/details/81087809 本文经过借鉴书籍资料.他 ...

  3. java 求数组最大子序列之和

    经典问题: 给定一个int[]数组,求其最大子序列之和(条件:数组中不全部都是负数). 最优算法,线性时间复杂度: public static int maxSubSum(int[] a){ int ...

  4. horizon服务

    一.horizon 介绍: 理解 horizon Horizon 为 Openstack 提供一个 WEB 前端的管理界面 (UI 服务 )通过 Horizone 所提供的 DashBoard 服务 ...

  5. Linux日常之命令sort

    素材借鉴:https://www.cnblogs.com/51linux/archive/2012/05/23/2515299.html 命令sort 是Linux中常用的排序命令,属于管道命令. 常 ...

  6. [uboot] (第二章)uboot流程——uboot-spl编译流程(转)

    版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明.本文链接:https://blog.csdn.net/ooonebook/article/det ...

  7. linux下的命令和常见问题笔记

    nginx的三大功能: 1.http服务 2.反向代理 3.负载均衡 2.当nginx重启报:[root@localhost logs]# service nginx reloadReloading ...

  8. bash: ipconfig: command not found

    问题描述: [root@localhost ~]# ipconfig-bash: ipconfig: command not found[root@localhost ~]# 解决方法一: cd /e ...

  9. 牛客挑战赛34 A~E

    闷声发大财 A O(nmk)dp即可,因为带了1/2的常数+2s所以很稳 #include <algorithm> #include <iostream> #include & ...

  10. 装sqlserver2005驱动解决firedac连接sql2000问题

    装了sqlserver2005驱动, 系统里装的sqlserver2012也能连上sql2000了. 当然firedac连sql2000也没问题了.设置个ODBCAdvanced为SQL Native ...