博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
BZOJ 3190. [JLOI2013]赛车
阅读量:4692 次
发布时间:2019-06-09

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

首先对于斜率相同的直线,只要保留 $b$ 最大的那些

发现最后那些对答案有贡献的线段是下凹的

把直线按斜率从小到大排序,一条条加入,用单调栈维护当前有贡献的直线

如果当前考虑加入的线和倒数第二条线的交点横坐标小于它与最后一条线的横坐标

或者,当前直线的 $b$ 比上一条直线的 $b$ 大

那么把最后一条线弹出,重复此过程直到不满足上述条件后把此线加入栈

这个画个图就很清楚了

最后的那些直线就是答案了

#include
#include
#include
#include
#include
using namespace std;typedef long long ll;inline int read(){ int x=0,f=1; char ch=getchar(); while(ch<'0'||ch>'9') { if(ch=='-') f=-1; ch=getchar(); } while(ch>='0'&&ch<='9') { x=(x<<1)+(x<<3)+(ch^48); ch=getchar(); } return x*f;}const int N=1e4+7;int n,Top,ans[N];struct Line { ll k,b; int id; Line (ll _k=0,ll _b=0,int _id=0) { k=_k,b=_b; id=_id; } inline bool operator < (const Line &tmp) const { return k!=tmp.k ? k
tmp.b; }}d[N],tmp[N],st[N];inline bool fc(Line A,Line B,Line C) { return (C.b-A.b)*(A.k-B.k)<(B.b-A.b)*(A.k-C.k); }int main(){ n=read(); for(int i=1;i<=n;i++) d[i].id=i; for(int i=1;i<=n;i++) d[i].b=read(); for(int i=1;i<=n;i++) d[i].k=read(); sort(d+1,d+n+1); int tot=0; for(int i=1;i<=n;i++) if(i==1 || (d[i].k!=d[i-1].k) || (d[i].k==d[i-1].k&&d[i].b==d[i-1].b) ) tmp[++tot]=d[i]; for(int i=1;i<=tot;i++) d[i]=tmp[i]; n=tot; for(int i=1;i<=n;i++) { while(Top>1 && fc(st[Top-1],st[Top],d[i])) Top--; while(Top && d[i].b>st[Top].b) Top--; st[++Top]=d[i]; } for(int i=1;i<=Top;i++) ans[i]=st[i].id; sort(ans+1,ans+Top+1); printf("%d\n",Top); for(int i=1;i<=Top;i++) printf("%d ",ans[i]); printf("\n"); return 0;}

 

转载于:https://www.cnblogs.com/LLTYYC/p/11516289.html

你可能感兴趣的文章
【POJ 3461】Oulipo
查看>>
Alpha 冲刺 (5/10)
查看>>
使用Siege进行WEB压力测试
查看>>
斑马为什么有条纹?
查看>>
android多层树形结构列表学习笔记
查看>>
Android_去掉EditText控件周围橙色高亮区域
查看>>
《构建之法》第一、二、十六章阅读笔记
查看>>
arrow:让Python的日期与时间变的更好
查看>>
(转)Excel的 OleDb 连接串的格式(连接Excel 2003-2013)
查看>>
Java并发编程
查看>>
Git Stash用法
查看>>
sql server 2008学习8 sql server存储和索引结构
查看>>
Jquery radio选中
查看>>
postgressql数据库中limit offset使用
查看>>
测试思想-集成测试 关于接口测试 Part 2
查看>>
windows下mysql密码忘了怎么办?【转】
查看>>
php生成器使用总结
查看>>
T-SQL中的indexof函数
查看>>
javascript基础之数组(Array)对象
查看>>
mysql DML DDL DCL
查看>>