jzoj5950
我們發現如下結論:
1.只有編號小的點才會對編號大的點產生影響
2.當當前點的y坐標大小為1~i最大的,則不會被以前的點影響
於是,維護一個斜率單調遞增的隊列
當當前點的y坐標大小為1~i最大的,則這個點的b值為i
否則,不斷刪去隊列尾部的點,直到隊尾的點y值大於現在的點,輸出隊尾的點的編號
為什麼?因為隊尾的點的y值是1~i-1的點中最後一個y值比現在點大的,我們這個點雖然被前面的點更新,但是更新它最後一個點是隊尾的點
#include<cstdio>
#include<cstring>
#include<cmath>
#include<algorithm>
using namespace std;
int n,x[1000010],y[1000010],st[1000010],ct,mn,b[1000010];
int main(){
freopen("beatall.in","r",stdin);
freopen("beatall.out","w",stdout);
scanf("%d",&n);
for(int i=1;i<=n;i++)
scanf("%d%d",&x[i],&y[i]);
mn=-2e9;
for(int i=1;i<=n;i++){
if(y[i]>=mn){
mn=y[i];
ct=0;
st[++ct]=i;
b[i]=i;
}
else{
while(ct&&((long long)(y[st[ct-1]]-y[st[ct]])*(x[st[ct]]-x[i]))<=((long long)(x[st[ct-1]]-x[st[ct]])*(y[st[ct]]-y[i])))ct--;
b[i]=st[ct];
st[++ct]=i;
}
}
for(int i=1;i<=n;i++)
printf("%d\n",b[i]);
}
jzoj5950的更多相关文章
随机推荐
- phython学习
Python 中文学习大本营 关于作者 赞助本站 The Python Tutorial (Python 2.7.X) 的中文翻译版本.Python Tutorial 为初学 Python 必备官方教 ...
- geoserver 开发1
打开项目,会看见下面这些包(其实还有很多插件之类的包,我都删除了) 5)可以从Eclipse启动GeoServer了. 如果你已经安装了GeoServer,现在也可以打开它的登陆页面进行操作. 三 结 ...
- process_进程池
from multiprocessing import Poolimport os,timeimport multiprocessingdef func(msg): print("msg:& ...
- oracle去重试验
http://blog.csdn.net/lunajiao/article/details/76014488
- [开源,学习,分享]UWP第三方简书客户端分享
简介 Windows10正式版发布到现在,我利用零零碎碎的一些时间对UWP进行一些学习,也基于这门技术开发了一个第三方的简书App. 基本界面 优酷视频: http://v.youku.com/v_s ...
- Linux下timer延时的使用
http://blog.csdn.net/hzpeterchen/article/details/8090385 因笔者工作在嵌入式平台上(非x386),下面给出的结论仅在arm平台上测试过. 1. ...
- 2018.09.08 poj1185 炮兵阵地(状压dp)
传送门 状压dp经典题. 我们把每一行的状态压成01串. 预处理出每一行可能出现的状态,然后转移每个被压缩的状态的1的个数就行了. 注意当前行转移要考虑前两行的状态. 还要注意只有一行的情况. 代码: ...
- Part 2 - Fundamentals(4-10)
https://simpleisbetterthancomplex.com/series/2017/09/11/a-complete-beginners-guide-to-django-part-2. ...
- 浅谈OCR之Tesseract
光 学字符识别(OCR,Optical Character Recognition)是指对文本资料进行扫描,然后对图像文件进行分析处理,获取文字及版面信息的过程.OCR技术非常专业,一般多是印刷.打印 ...
- Andfix热修复原理
一.前言 最近腾讯弄出一个Tinker热修复框架,那么本文先不介绍这个框架,先来介绍一下阿里的一个热修复框架AndFix,这个框架出来已经很长时间了,但是看网上没有太多非常详细的讲解,这里就来做一次分 ...