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 ...
随机推荐
- [HTTP] Origins, CROS, Preflight
Origins made up of three parts the data scheme, the hostname and the prot. It is important to know t ...
- [Webpack 2] Use Karma for Unit Testing with Webpack
When writing tests run by Karma for an application that’s bundled with webpack, it’s easiest to inte ...
- PERCONA-TOOLKIT 工具的安装与使用2
[root@server-mysql ~]# cd /usr/bin [root@server-mysql bin]# ls pt* pt-align pt-duplicate-key-checker ...
- 音频播放AVFoundation框架
一.系统声音 ios应用中的提醒声音.游戏背景音乐等.可以播放的格式有CAF.AIF.WAV. 系统声音服务提供了一个API,但是没有操作声音和控制音量的功能,因此如果为多媒体或者游戏创建专门的声音, ...
- Android 自定义View修炼-Android 实现自定义的卫星式菜单(弧形菜单)View
一.总述 Android 实现卫星式菜单也叫弧形菜单的主要要做的工作如下:1.动画的处理2.自定义ViewGroup来实现卫星式菜单View (1)自定义属性 a. 在attrs.xml中 ...
- c++匿名类—指针
1 摘自网上 2代码实例 #include <iostream> #include <list> #include <iterator> #include < ...
- ALTER---为已创建的表添加默认值
alter table table_name modify column_name default default_value; 例: alter table userinfo modify emai ...
- js事件模型
连接在此 http://www.cnblogs.com/zqstc/archive/2009/11/26/1611464.html
- 界面动态加载时报NullPointException
今天在做环境监测的模拟软件时,登陆页面报NullPointException 一般像我们初始化Button时,是Button btn=(Button)findViewById(R.id.button1 ...
- Java分布式缓存框架
http://developer.51cto.com/art/201411/457423.htm 在开发中大型Java软件项目时,很多Java架构师都会遇到数据库读写瓶颈,如果你在系统架构时并没有将缓 ...