BZOJ
洛谷

对于线段,依旧是存斜率即可。
表示精度误差一点都不需要管啊/托腮

就我一个人看成了mod(10^9+1)吗。。

//4248kb    892ms
#include <cstdio>
#include <cctype>
#include <algorithm>
//#define gc() getchar()
#define MAXIN 300000
#define gc() (SS==TT&&(TT=(SS=IN)+fread(IN,1,MAXIN,stdin),SS==TT)?EOF:*SS++)
#define mp std::make_pair
#define pr std::pair<double,int>
typedef long long LL;
const int N=4e4+5;char IN[MAXIN],*SS=IN,*TT=IN;
struct Segment_Tree
{#define ls rt<<1#define rs rt<<1|1#define lson l,m,ls#define rson m+1,r,rs#define S N<<2int ID[S];double K[S],B[S];#undef Svoid Modify(int l,int r,int rt,int L,int R,double k,double b,int id){if(L<=l && r<=R){double l0=K[rt]*l+B[rt],r0=K[rt]*r+B[rt],l1=k*l+b,r1=k*r+b;if(l0>=l1 && r0>=r1) return;if(l0<l1 && r0<r1) {K[rt]=k, B[rt]=b, ID[rt]=id; return;}int m=l+r>>1;double p=(b-B[rt])/(K[rt]-k);if(l0>l1)if(p<=m) Modify(lson,L,R,K[rt],B[rt],ID[rt]), K[rt]=k, B[rt]=b, ID[rt]=id;else Modify(rson,L,R,k,b,id);elseif(p<=m) Modify(lson,L,R,k,b,id);else Modify(rson,L,R,K[rt],B[rt],ID[rt]), K[rt]=k, B[rt]=b, ID[rt]=id;return;}int m=l+r>>1;if(L<=m) Modify(lson,L,R,k,b,id);if(m<R) Modify(rson,L,R,k,b,id);}pr Query(int l,int r,int rt,double x){if(l==r) return mp(K[rt]*x+B[rt],-ID[rt]);int m=l+r>>1;return std::max(mp(K[rt]*x+B[rt],-ID[rt]),x<=m?Query(lson,x):Query(rson,x));}
}T;inline int read()
{int now=0;register char c=gc();for(;!isdigit(c);c=gc());for(;isdigit(c);now=now*10+c-'0',c=gc());return now;
}int main()
{#define n 39989#define mod 1000000000for(int Q=read(),ans=0,cnt=0; Q--; )switch(read()){case 0: printf("%d\n",ans=-T.Query(1,n,1,(read()+ans-1)%n+1).second); break;case 1:{++cnt;int x1=(read()+ans-1)%n+1,y1=(read()+ans-1)%mod+1,x2=(read()+ans-1)%n+1,y2=(read()+ans-1)%mod+1;double k,b;if(x1>x2) std::swap(x1,x2), std::swap(y1,y2);if(x1!=x2) k=1.0*(y1-y2)/(x1-x2), b=y1-k*x1;//忘转double了== else k=0, b=std::max(y1,y2);T.Modify(1,n,1,x1,x2,k,b,cnt);break;}}return 0;
}

转载于:https://www.cnblogs.com/SovietPower/p/10079038.html

BZOJ.3165.[HEOI2013]Segment(李超线段树)相关推荐

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

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

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

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

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

    $ \color{#0066ff}{ 题目描述 }$ 要求在平面直角坐标系下维护两个操作: 在平面上加入一条线段.记第 i 条被插入的线段的标号为 i 给定一个数 k,询问与直线 x = k 相交的线 ...

  4. BZOJ 3165 Heoi2013 Segment 线段树

    题目大意:给定一个平面,多次插入一条线段,以及询问某个x值能截到的最大纵坐标 OTZ 一份详细的网址:http://hi.baidu.com/wyl8899/item/2deafd3a376ef2d4 ...

  5. 李超线段树 [Heoi2013]Segment

    问题 D: [Heoi2013]Segment 时间限制: 4 Sec 内存限制: 256 MB 题目描述 要求在平面直角坐标系下维护两个操作: 1.在平面上加入一条线段.记第i条被插入的线段的标号为 ...

  6. BZOJ 3165 李超线段树

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

  7. 【李超线段树】BZOJ3165 [Heoi2013]Segment

    题面在这里 李超线段树的裸题,不解释 示例程序: #include<cstdio> #include<cmath> #include<algorithm> usin ...

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

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

  9. 【BZOJ3165】Segment(李超线段树)

    题目来源:BZOJ3165 考虑以横坐标为下标维护线段树. 在每个结点维护一个标记,表示覆盖整个结点的最高线段,注意这个标记对整个区间都有作用,无需下传. 因为只有单点询问,所以可以不用维护区间的最高 ...

最新文章

  1. 图片剪切空指针崩溃问题在Android 6.0系统出现
  2. php程序网站整站301,织梦dede怎么实现整站301
  3. 深入理解多线程(三)—— Java的对象头
  4. 单例模式:基于反射和反序列化破解单例模式的漏洞及其解决方法
  5. BZOJ1951 [Sdoi2010]古代猪文 【费马小定理 + Lucas定理 + 中国剩余定理 + 逆元递推 + 扩展欧几里得】...
  6. .NET Standard 来日苦短去日长
  7. HDU题目分类啊!!!
  8. windows下python安装
  9. RMAN-06023: no backup or copy of datafile 6 found to restore
  10. Android 打包报错 Error:(3) Error: jdjg_str is not translated in zh (Chinese) [MissingTranslation]
  11. 从淘宝CFO到接棒马云 张勇是如何在12年里成为阿里董事局主席的
  12. android:configChanges属性
  13. (cocos2dx-3.3)3D坐标系
  14. 【优化算法】蚱蜢优化算法(GOA)【含Matlab源码 1070期】
  15. C语言学习资料汇集 助你成为更好的程序员
  16. maven:《Maven实战》读书笔记
  17. rmd中将html转为pdf,Rmd文件转化为PDF报告
  18. 定积分,二重积分,三重积分
  19. office钓鱼学习
  20. 一键领取php,新款引流必备一键领取名片赞PHP单页源码

热门文章

  1. 字符流Reader和Writer
  2. JS中SetTimeOut和SetInterval方法的区别?
  3. -------------------开启我的手残之旅---------我就是喜欢写笔记-------咋滴啦?-----
  4. hexo+github+hexo-theme-matery搭建个人免费博客
  5. 行内元素、块级元素和行内块级元素
  6. Vue项目—请求函数的封装
  7. 【Vue】—Vue组件基本介绍
  8. git回退历史版本无法上传_git下载历史版本
  9. 怎样教育孩子,能让孩子有更好的学习?
  10. 退休后,你是因为什么还要继续工作?做原来的工作还是做新工作?