BZOJ3190[JLOI2013]赛车
Description
Input
Output
Sample Input
1 1 0 0
15 16 10 20
Sample Output
1 2 4
HINT
对于100%的数据N<=10000, 0<=ki<=10^9, 0<=vi<=10^9
题解:
设位置为yi,yi=ki+ti*v,将其看作是y关于t的一次函数图像,毫无疑问,T时刻领先的赛车就是t=T时yi最大的函数。
这样,原题就变成了半平面交的模型,解法同BZOJ1007[HNOI2008]水平可见直线。
代码:
var
i,j,l,r,n,m:longint;
k,b,a,s:array[..]of longint;
v:array[..]of boolean;
flag:boolean;
procedure sort(l,r:longint);
var
i,j,x,x2,y:longint;
begin
i:=l; j:=r; x:=k[(l+r)div ]; x2:=b[(l+r)div ];
repeat
while(k[i]<x)or((k[i]=x)and(b[i]<x2))do inc(i);
while(x<k[j])or((x=k[j])and(x2<b[j]))do dec(j);
if i<=j then
begin
y:=k[i]; k[i]:=k[j]; k[j]:=y;
y:=b[i]; b[i]:=b[j]; b[j]:=y;
y:=a[i]; a[i]:=a[j]; a[j]:=y;
inc(i); dec(j);
end;
until i>j;
if i<r then sort(i,r);
if j>l then sort(l,j);
end;
begin
readln(n);
for i:= to n do read(b[i]);
for i:= to n do read(k[i]);
for i:= to n do a[i]:=i;
sort(,n);
r:=; i:=;
while(i<n)and(k[i]=k[i+])and(b[i]<>b[i+])do inc(i);
s[]:=i; inc(i); k[]:=-;
while i<=n do
begin
while(r>)and(k[i]=k[s[r]])and(b[i]<>b[s[r]])do dec(r);
if k[i]<>k[s[r]] then
begin
while(r>)and((b[i]-b[s[r]])/(k[s[r]]-k[i])<)do dec(r);
while(r>)and((b[i]-b[s[r]])/(k[s[r]]-k[i])<
(b[s[r]]-b[s[r-]])/(k[s[r-]]-k[s[r]])) do dec(r);
end;
inc(r); s[r]:=i; inc(i);
end;
fillchar(v,sizeof(v),false);
writeln(r);
for i:= to r do v[a[s[i]]]:=true;
flag:=false;
for i:= to n do
if v[i] then
begin
if not flag then
begin
flag:=true; write(i);
end else write(' ',i);
end;
writeln;
end.
BZOJ3190[JLOI2013]赛车的更多相关文章
- BZOJ-3190 [JLOI2013]赛车
转成二元一次不等式组,然后半平面交. #include <cstdlib> #include <cstdio> #include <cmath> #include ...
- 【BZOJ3190】[JLOI2013]赛车 单调栈+几何
[BZOJ3190][JLOI2013]赛车 Description 这里有一辆赛车比赛正在进行,赛场上一共有N辆车,分别称为个g1,g2……gn.赛道是一条无限长的直线.最初,gi位于距离起跑线前进 ...
- 【BZOJ 3190】 3190: [JLOI2013]赛车 (半平面交)
3190: [JLOI2013]赛车 Description 这里有一辆赛车比赛正在进行,赛场上一共有N辆车,分别称为个g1,g2--gn.赛道是一条无限长的直线.最初,gi位于距离起跑线前进ki的位 ...
- bzoj 3190 [JLOI2013]赛车 半平面交+细节处理
题目大意 这里有一场赛车比赛正在进行,赛场上一共有N辆车,分别称为g1,g2--gn.赛道是一条无限长的直线.最初,gi位于距离起跑线前进ki的位置.比赛开始后,车辆gi将会以vi单位每秒的恒定速度行 ...
- P3256 [JLOI2013]赛车
传送门 如果把速度看成斜率,起始位置看成截距,这就是一个水平可见直线了-- 不过这题里我实现方法借鉴了CQzhangyu大佬的,先按速度排序,然后维护一个单调栈,如果当前的人速度比栈顶大距离又比它远直 ...
- bzoj3190【JLOI2013】赛车
3190: [JLOI2013]赛车 Time Limit: 10 Sec Memory Limit: 128 MB Submit: 1445 Solved: 454 [Submit][Statu ...
- 【bzoj5089】最大连续子段和 分块+单调栈维护凸包
题目描述 给出一个长度为 n 的序列,要求支持如下两种操作: A l r x :将 [l,r] 区间内的所有数加上 x : Q l r : 询问 [l,r] 区间的最大连续子段和. 其中,一 ...
- bzoj AC倒序
Search GO 说明:输入题号直接进入相应题目,如需搜索含数字的题目,请在关键词前加单引号 Problem ID Title Source AC Submit Y 1000 A+B Problem ...
- 刷题总结——赛车(bzoj3190)
题目: 题目背景 JLOI2013 T1 题目描述 这里有一辆赛车比赛正在进行,赛场上一共有 N 辆车,分别称为 g1,g2,……,gn.赛道是一条无限长的直线.最初,gi 位于距离起跑线前进 ki ...
随机推荐
- Java开源内容管理CMS系统J4CMS支持静态化直接ftp上传到你的空间了
页面可直接编辑的cms系统j4cms能够直接支持使用ftp 输出 html到你的空间了 真正的静态化 这是静态化后的站点 http://www.j4cms.com/ 源代码上传至csdn了,能够下载源 ...
- ltrace killed by SIGTRAP
[Ltrace-devel] ltrace stucks with pthreads Heiko Carstens heiko.carstens at de.ibm.comFri Apr 14 11: ...
- Git 安装与简单使用(新手必看)
1.安装git,默认下一步下一步等待安装完成 2.设置全局账号 安装之后去快速启动栏点击GitBash git config --global user.name "xiefeng" ...
- jdk安装 java运行编译(不含语法)
一.开发的准备 1.jdk的安装(window) (1)根据自己的电脑下载对应的jdk,并安装 (推荐安装在没有中文的目录中). 网站 http://www.oracle.com/technetwor ...
- Kafka 0.8: 多日志文件夹机制
kafka 0.7.2 中对log.dir的定义如下: log.dir none Specifies the root directory in which all log data is kept. ...
- javascript变量提升
提升是一种将变量和函数的声明移到函数作用域(如果不在任何函数内的话就是全局作用域)最顶部的机制. 提升影响了变量的生命周期,一个变量的生命周期包含3个阶段: 声明——创建一个新变量,例如var myV ...
- Manually connecting to the Oracle Linux Yum Server
Manually connecting to the Oracle Linux Yum Server 1. Download and Install Oracle Linux Note: The ...
- JUnit4 笔记
1. JUnit4基础 JUnit4 与 JUnit3不同的是,不需要继承测试类,而是通过JDK5提供的注解去标识测试方法. 常用的注解如下: @Before:初始化方法 对于每一个测试方法都要执行一 ...
- ThinkPHP函数详解:F方法
我们已经了解了ThinkPHP中的S方法的用法,F方法其实是S方法的一个子集功能,仅用于简单数据缓存,并且只能支持文件形式,不支持缓存有效期,因为采用的是PHP返回方式,所以其效率较S方法较高,因此我 ...
- 20160406javaweb 之JDBC简单案例
前几天写的user注册登录注销案例,没有用到数据库,现在做出改动,使用数据库存储信息: 一.首先我们需要建立一个数据库: 如下图: 创建数据库的代码如下: -- 导出 database02 的数据库结 ...