博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
jzoj5950
阅读量:5300 次
发布时间:2019-06-14

本文共 900 字,大约阅读时间需要 3 分钟。

我們發現如下結論:

1.只有編號小的點才會對編號大的點產生影響
2.當當前點的y坐標大小為1~i最大的,則不會被以前的點影響
於是,維護一個斜率單調遞增的隊列
當當前點的y坐標大小為1~i最大的,則這個點的b值為i
否則,不斷刪去隊列尾部的點,直到隊尾的點y值大於現在的點,輸出隊尾的點的編號
為什麼?因為隊尾的點的y值是1~i-1的點中最後一個y值比現在點大的,我們這個點雖然被前面的點更新,但是更新它最後一個點是隊尾的點

#include
#include
#include
#include
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]);}

转载于:https://www.cnblogs.com/rilisoft/p/10385220.html

你可能感兴趣的文章
WebRTC网关服务器单端口方案实现
查看>>
表达式的前后缀表达形式
查看>>
HTTP协议
查看>>
Django 学生信息 添加 功能 遇到的问题.
查看>>
Merge Sorted Array Leetcode Java and C++
查看>>
网络棋牌游戏服务器架构
查看>>
BestCoder Round #86 部分题解
查看>>
weblogic在linux服务器上部署应用
查看>>
实现页面跳转
查看>>
沟通技巧系列 - 入门篇
查看>>
个人附加作业
查看>>
手游包压缩技术和云更新技术主要能实现什么功能?
查看>>
sed命令
查看>>
转换日期格式的工具类
查看>>
第三方控件获取值问题的解决(附转载的easyUI datagrid 时间格式化(两种))
查看>>
SET IDENTITY_INSERT 和 DBCC CHECKIDENT
查看>>
hearthbuddy中的Class276
查看>>
kentico version history and upgrade
查看>>
关于HostnameVerifier接口的解读
查看>>
Swift的闭包
查看>>