题目:

题目背景

JLOI2013 T1

题目描述

这里有一辆赛车比赛正在进行,赛场上一共有 N 辆车,分别称为 g1,g2,……,gn。赛道是一条无限长的直线。最初,gi 位于距离起跑线前进 ki 的位置。比赛开始后,车辆 gi 将会以 vi 单位每秒的恒定速度行驶。在这个比赛过程中,如果一辆赛车曾经处于领跑位置的话(即没有其他的赛车跑在他的前面),这辆赛车最后就可以得奖,而且比赛过程中不用担心相撞的问题。现在给出所有赛车的起始位置和速度,你的任务就是算出那些赛车将会得奖。

输入格式

第一行有一个正整数 N 表示赛车的个数。
接下来一行给出 N 个整数,按顺序给出 N 辆赛车的起始位置。
再接下来一行给出 N 个整数,按顺序给出 N 辆赛车的恒定速度。

输出格式

输出包括两行,第一行为获奖的赛车个数。
第二行按从小到大的顺序输出获奖赛车的编号,编号之间用空格隔开,注意最后一个编号后面不要加空格。

样例数据 1

输入  [复制]

 

4 
1 1 0 0 
15 16 10 20

输出

3 
1 2 4

备注

【数据范围】
对于 20% 的数据:N<=10
对于 50% 的数据:N<=6000
对于 100% 的数据:N<=10000, 0<=ki<=109, 0<=vi<=109

题解:

  半平面交模版的,注意在两端点不确定的情况下充分利用斜率和交点,另外

心得:

  模版题模版题啦啦啦

代码:

#include<iostream>
#include<cstdio>
#include<cstdlib>
#include<cmath>
#include<ctime>
#include<cctype>
#include<cstring>
#include<string>
#include<algorithm>
using namespace std;
const double minn=1e-;
const int N=;
int read()
{
int f=,x=;char ch=getchar();
while(ch<''||ch>''){if(ch=='-')f=-;ch=getchar();}
while(ch>=''&&ch<=''){x=x*+ch-'';ch=getchar();}
return x*f;
}
struct line
{
int pos;
int v;
int id;
}car[N],q[N],a[N];
int cnt,ans[N];
double interx(line a,line b)
{
return (double)(b.pos-a.pos)/(a.v-b.v);
}
bool comp(line a,line b)
{
if(a.v!=b.v) return a.v<b.v;
else return a.pos<b.pos;
}
bool jud(line a,line b,line c)
{
return interx(a,b)>interx(a,c);
}
int main()
{
// freopen("a.in","r",stdin);
cnt=read();
for(int i=;i<=cnt;i++)
{
car[i].pos=read();
car[i].id=i;
}
for(int i=;i<=cnt;i++)
car[i].v=read();
sort(car+,car+cnt+,comp);
int tot=;
for(int i=;i<=cnt;i++)
{
if(car[i].v!=car[i-].v||(car[i].v==car[i-].v&&car[i].pos==car[i-].pos))
tot++;
car[tot]=car[i];
}
cnt=tot,tot=;
a[++tot]=car[];
ans[]=car[].id;
for(int i=;i<=cnt;i++)
{
while(tot>=&&interx(a[tot],car[i])<-minn) tot--;
while(tot>=&&jud(a[tot-],a[tot],car[i])) tot--;
a[++tot]=car[i];
ans[tot]=car[i].id;
}
sort(ans+,ans+tot+);
cout<<tot<<endl;
for(int i=;i<=tot;i++)
{
printf("%d",ans[i]);
if(i!=tot)printf(" ");
}
return ;
}

刷题总结——赛车(bzoj3190)的更多相关文章

  1. C#LeetCode刷题-堆

    堆篇 # 题名 刷题 通过率 难度 23 合并K个排序链表   39.4% 困难 215 数组中的第K个最大元素   51.5% 中等 218 天际线问题   32.9% 困难 239 滑动窗口最大值 ...

  2. C#LeetCode刷题-动态规划

    动态规划篇 # 题名 刷题 通过率 难度 5 最长回文子串   22.4% 中等 10 正则表达式匹配   18.8% 困难 32 最长有效括号   23.3% 困难 44 通配符匹配   17.7% ...

  3. LeetCode刷题系列

    LeetCode 我们工作面试和提高自身数据结构和算法能力的时候往往需要刷刷题,我选择LeetCode是通过一个留学论坛了解的.专业,覆盖语种全面. 提前说说刷题的心得: 尽量手写代码,少使用IDE的 ...

  4. ife任务刷题总结(一)-css reset与清除浮动

    本文同时发布于本人的个人网站www.yaoxiaowen.com 百度创办的前端技术学院,是一个面向大学生的前端技术学习平台.虽然只有大学生才有资格报名,提交代码进行比赛排名.但是这并不妨碍我们这些初 ...

  5. 刷题ING...

    我用codeVS刷题.. 努力准备!!

  6. XidianOJ 1020 ACMer去刷题吧

    题目描述 刷题是每个ACMer必由之路,已知某oj上有n个题目,第i个题目小X能做对的概率为Pi(0<=Pi<=1,1<=i<=n) 求小X至少做对k道题的概率 输入 第一行输 ...

  7. 【BZOJ-4590】自动刷题机 二分 + 判定

    4590: [Shoi2015]自动刷题机 Time Limit: 10 Sec  Memory Limit: 256 MBSubmit: 156  Solved: 63[Submit][Status ...

  8. NOI题库分治算法刷题记录

    今天晚自习机房刷题,有一道题最终WA掉两组,极其不爽,晚上回家补完作业欣然搞定它,特意来写篇博文来记录下 (最想吐槽的是这个叫做分治的分类,里面的题目真的需要分治吗...) 先来说下分治法 分治法的设 ...

  9. NOI题库刷题日志 (贪心篇题解)

    这段时间在NOI题库上刷了刷题,来写点心得和题解 一.寻找平面上的极大点 2704:寻找平面上的极大点 总时间限制:  1000ms  内存限制:  65536kB 描述 在一个平面上,如果有两个点( ...

随机推荐

  1. 源文件名长度大于系统支持的长度,无法删除,java主方法执行方式删除

    import java.io.File; /** * @author 海盗船长 * 2017年2月14日11:24:26 */ public class DeleteFiles { public st ...

  2. Windows上SVN服务器搭建【转】

    Subversion是优秀的版本控制工具,其具体的的优点和详细介绍,这里就不再多说.本文介绍Windows上 VisualSVN server 服务端和 TortoiseSVN客户端搭配使用: 现在S ...

  3. 后台安装 SQL Server 无人值守 安装

    (开头闲淡)项目需要必须安装SQL的,查了很久,断断续续用了各种方法,今天终于用了正确的姿(xia)势(mo)弄成了. 最开始用的方法是调用Win的API模拟鼠标操作安装的,嗯,虽然勉强可以,就是有些 ...

  4. ios UnitTest 学习笔记1

    一.运行第一个单元测试: 1.在Xcode 5中新建一个工程默认自带一个单元测试的文件夹,IDE自动生成了一个实现XCTestCase的.m文件,里面有一个失败测试(早期版本中实现的是SenTestC ...

  5. [文章泛读] The varying faces of a program transformation systems (ACM Inroads, 2012)

    Beevi S. Nadera, D. Chitraprasad, and Vinod S. S. Chandra. 2012. The varying faces of a program tran ...

  6. vue分环境打包配置方法一

    直接上代码配置: 首先是config下面的文件修改 dev.env.js  'use strict' const merge = require('webpack-merge') const prod ...

  7. LeetCode 3Sum Closest 最近似的3sum(2sum方法)

    题意:找到最接近target的3个元素之和,并返回该和. 思路:用2个指针,时间复杂度O(n^2). int threeSumClosest(vector<int>& nums, ...

  8. openstack安装dashboard后访问horizon出错 End of script output before headers: django.wsgi

    在配置文件中增加如下的一句解决问题 /etc/apache2/conf-available/openstack-dashboard.conf WSGIApplicationGroup %{GLOBAL ...

  9. ftp - Internet 文件传输程序 (file transfer program)

    概述 (SYNOPSIS) ftp [-pinegvd ] [host ] pftp [-inegvd ] [host ] 说明 (DESCRIPTION) 用户通过 Ftp 这个程序来使用 Inte ...

  10. WPF知识点全攻略04- XAML页面布局

    名称 说明 Canvas 使用固定坐标绝对定位元素 StackPanel 在水平或竖直方向放置元素 DockPanel 根据外部容器边界,自动调整元素 WrapPanel 在可换行的行中放置元素 Gr ...