对于区间[l,r],若询问的直线与该区间的凸壳有交,则有解。

在线段树每个区间上维护凸壳,然后查询时在相应凸壳上二分斜率即可,时间复杂度$O(n\log^2n)$。

#include<cstdio>
#define N 262145
typedef long long ll;
int T,n,i,c,l[N],r[N],t;
struct P{int x,y;P(){}P(int _x,int _y){x=_x,y=_y;}inline P operator-(P b){return P(x-b.x,y-b.y);}inline ll operator*(P b){return(ll)x*b.y-(ll)y*b.x;}
}p[100010],A,B,q[1900000];
void build(int x,int a,int b){q[l[x]=++t]=p[a];for(int i=a+1;i<=b+1;q[++t]=p[i++])while(t>l[x]&&(p[i]-q[t])*(q[t]-q[t-1])<=0)t--;r[x]=t;if(a==b)return;int mid=(a+b)>>1;build(x<<1,a,mid),build(x<<1|1,mid+1,b);
}
inline bool ex(int l,int r){int mid,t=l++;while(l<=r){mid=(l+r)>>1;if((q[mid]-A)*(B-q[mid])<(q[mid-1]-A)*(B-q[mid-1]))l=(t=mid)+1;else r=mid-1;}return(q[t]-A)*(B-q[t])<0;
}
int ask(int x,int a,int b){if(c<=a){if(!ex(l[x],r[x]))return 0;if(a==b)return a;}int mid=(a+b)>>1;if(c<=mid){int t=ask(x<<1,a,mid);if(t)return t;}return ask(x<<1|1,mid+1,b);
}
inline void read(int&a){char c;while(!(((c=getchar())>='0')&&(c<='9')));a=c-'0';while(((c=getchar())>='0')&&(c<='9'))(a*=10)+=c-'0';}
int main(){for(read(T);T--;puts("0")){for(read(n),i=1;i<=n;i++)read(p[i].x),read(p[i].y);for(t=0,build(1,1,n-1),i=1;i<n-1;i++)A=p[i],B=p[i+1],c=i+1,printf("%d ",ask(1,1,n-1));}return 0;
}

  

转载于:https://www.cnblogs.com/clrs97/p/4700870.html

BZOJ4049 : [Cerc2014] Mountainous landscape相关推荐

  1. 一步步指导 AI 画一幅中国山水画

    在 「AI 作画第二弹」这篇文章中,我给大家介绍了 AI 作画工具在 Linux 系统上的部署.如果对 Linux 系统不熟,或者显卡比较低端,也可以考虑一些在线网站.国内比较好的网站有: 文心一格 ...

  2. Android :landscape||portrait 切换

    可在AndroidManifest.xml里面配置屏幕发现. 在<Activity>中加入这一行android:screenOrientation="landscape/port ...

  3. System Landscape Recommendations for SAP Customer Activity Repository

    System Landscape Recommendations for SAP Customer Activity Repository 该PDF文件可以在如下链接里下载: System Lands ...

  4. Great Power, Great Responsibility: The 2018 Big Data AI Landscape

    http://mattturck.com/bigdata2018/ It's been an exciting, but complex year in the data world. Just as ...

  5. 动态更改屏幕方向LANDSCAPE与PORTRAIT 转

    动态更改屏幕方向--LANDSCAPE与PORTRAIT package irdc.ex05_22; import android.app.Activity; import android.conte ...

  6. CERC17 Problem L - Lunar Landscape(差分,坐标系)

    CERC17 Problem L - Lunar Landscape Solution 如果只有AAA,我们可以简单地使用差分解决. 加入了BBB之后,可以把单位正方形用对角线拆成四个等腰Rt,统计等 ...

  7. landscape 1

    1. 创建出landscape的分层材质 2. 把材质添加给landscape后,可以在landscape的画刷模式下看到 3. 通过点击右侧的加号,依次添加layer后,就可以使用他们进行地形的绘制 ...

  8. hexo需要先编辑好html文件吗,教你定制Hexo的landscape打造自己的主题_html/css_WEB-ITnose...

    我敢肯定大家不仅想拥有自己的博客,还想有一套自己的主题.目前Hexo的主题多数都是从官方主题landscape修改而成的,然而别人能修改,你也可以修改,就算你不会编程,不会web前端,跟着我做你一样可 ...

  9. CNCF landscape 云原生 敏捷开发

    CNCF landscape 敏捷价值观和原则的开发方法包括: 极限编程(XP),Scrum,精益软件开发(Lean Software Development),动态系统开发方法(DSDM),特征驱动 ...

  10. 能量景观(Energy landscape)

    文章目录 1. 简介 2. 应用 3. 正式定义 3.1 宏观例子 1. 简介 图 世界社会经济系统的简化能量景观,和不同细节层次的社会倾斜的动态(social tipping dynamics),突 ...

最新文章

  1. Gartner 「RPA市场竞争格局」:中国厂商首次进入国际视野
  2. Android Studio NDK 代码 Source Insight调试 (NDK 目前开发方案 | NDK 编译 | 导入 so 库 | 项目编码转换)
  3. 《系统集成项目管理工程师》必背100个知识点-91机房防静电的方式
  4. 技嘉主板GA-B85M-D3V PLUS 1150组装问题汇总
  5. 数据库高可用架构 转载
  6. 小程序影视APP/追剧吧/脱离微擎/可用火车头采集小程序影视
  7. 对硬盘做镜像,按位与按文件有什么区别?
  8. Glide-Android下高效加载多媒体文件
  9. 计算(a+b)*c的值
  10. Vue 开发环境显示log信息
  11. python科学计算-python科学计算
  12. 高等数学张宇18讲 第九讲 积分等式与积分不等式
  13. 8/人天,小记一次 JAVA(APP后台) 项目改造 .NET 过程(后台代码已开源于 Github)
  14. cmake编译时中途报错:undefined reference to ‘xxx‘.未定义引用
  15. java树状结构递归与非递归实现,外加sql递归实现
  16. 景观智慧路灯:基于景观智慧灯杆的浙江嘉兴智慧旅游景区项目分享
  17. Focal loss 损失函数详解
  18. ZFS-128bit文件系统
  19. [读书笔记]Core Java: Volume I - Fundamentals Chapter 8
  20. 使用HTML设计网页

热门文章

  1. 蓝的成长记——追逐DBA(11):回家后的安逸,晕晕乎乎醒了过来
  2. DINO:自监督ViT的新特性
  3. 三星6.0系统机器(亲测有效)激活XPOSED框架的流程
  4. matlab处理fits文件,读取 FITS 文件中的数据
  5. css 文本属性 文本两端对齐 单行文本间距 首行缩进
  6. 让微软起死回生之作:CEO纳德拉18年新书《刷新》
  7. 笔记本损耗60 计算机提示,笔记本电池损耗60%多怎么处理!
  8. 四川取消英语计算机考试,四川远程教育2019年英语考试取消了吗
  9. 微博Jquery案例
  10. 10款主流的软件测试工具,你用过吗