BZOJ 3190: [JLOI2013]赛车
题目大意:
每辆赛车有自己的出发位置和速度,问有多少赛车在某个时刻处于第一的位置。
题解:
每辆赛车任意时刻的位置可以用一条直线来表示,按斜率排序依次加入,单调栈。
最后在栈中的就是最后的答案。
和BZOJ1007相似。
代码:
#include<cstdio>
#include<algorithm>
using namespace std;
int d[1000005];
struct node{int b,k,id;
}a[1000005],q[1000005];
bool cmp(node a,node b){return a.k<b.k || a.k==b.k && a.b<b.b;
}
bool cmp1(node a,node b){return a.id<b.id;
}
int main(){int n;scanf("%d",&n);for (int i=1; i<=n; i++)scanf("%d",&a[i].b);for (int i=1; i<=n; i++){scanf("%d",&a[i].k);a[i].id=i;}sort(a+1,a+n+1,cmp);int t=1;for (int i=2; i<=n; i++){if (a[i].k!=a[i-1].k || (a[i].k==a[i-1].k && a[i].b==a[i-1].b)) t++;a[t]=a[i];}n=t;q[1]=a[1];int top=1;d[1]=1;for (int i=2; i<=n; i++){while (top>=1 && a[i].b>q[top].b) top--;while (top>=2 && ((double)q[d[top]].b-q[top].b)/(q[top].k-q[d[top]].k)>((double)q[d[top]].b-a[i].b)/(a[i].k-q[d[top]].k)) top--;q[++top]=a[i];if (q[top].k==q[top-1].k) d[top]=d[top-1];else d[top]=top-1;}sort(q+1,q+top+1,cmp1);printf("%d\n",top);for (int i=1; i<top; i++)printf("%d ",q[i].id);printf("%d",q[top].id);return 0;
}
转载于:https://www.cnblogs.com/silenty/p/8848936.html
BZOJ 3190: [JLOI2013]赛车相关推荐
- bzoj 3190 赛车 半平面交
直接写的裸的半平面交,已经有点背不过模板了... 这题卡精度,要用long double ,esp设1e-20... #include<iostream> #include<cstd ...
- bzoj3190: [JLOI2013]赛车
题目 http://www.lydsy.com/JudgeOnline/problem.php?id=3190 题解 上午一节课写出来,在CodeVS上交了,90分 然而一直到刚才,我都在调试.... ...
- [BZOJ] 3191 [JLOI2013]卡牌游戏
Time Limit: 10 Sec Memory Limit: 128 MB Submit: 725 Solved: 487 [Submit][Status][Discuss] Descriptio ...
- bzoj3190 [JLOI2013]赛车 半平面交
思路和求凸包有点像 首先根据初始位置排序,然后同位置按斜率升序 然后加一条直线就暴力找就可以了(可以二分) 存每条直线的选取区间,然后由于有效的斜率单增,所以若覆盖了就是最后一个 要注意多条直线交于区 ...
- 2019.4.summary
2019.4.1 BZOJ1061: [Noi2008]志愿者招募 真心有点难QAQ https://www.byvoid.com/zhs/blog/noi-2008-employee 看void爷的 ...
- 退役前的做题记录1.0
退役前的做题记录1.0 租酥雨最近很懒qwq,具体表现在写题的时候不想发题解了. 但是想想这样也不太好,就决定发个一句话(半句话到几句话不等)题解上来. 2018-09.18-2018-09.28 [ ...
- 【JLOI2013合集】BZOJ3090 赛车 BZOJ3091 卡牌游戏 BZOJ3092 删除物品 BZOJ3093 地形生成...
赛车: 这个题就是水平可见直线.. 水平可见直线怎么做呢.. 就是把所有直线按斜率排序.然后从前往后处理边. 当中维护一个栈.如果当前线和栈顶的交点在栈顶和栈顶-1的交点左边.那么弹掉栈顶.. (可以 ...
- 【BZOJ 3191】[JLOI2013]卡牌游戏
注意 最后一个没有空格!!!!! 题解(摘自网络) 有一个很重要的性质:当前人获胜的概率只与其在排列中与庄家的相对位置和人数有关..跟具体有哪些人无关.. 那么我们可以用f[i][j]表示还有i人时从 ...
- BZOJ刷题记录---提高组难度
BZOJ刷题记录---提高组难度 总目录详见https://blog.csdn.net/mrcrack/article/details/90228694 序号 题号 算法 思想难度 实现难度 总难度 ...
- BZOJ.1558.[JSOI2009]等差数列(线段树 差分)
BZOJ 洛谷 首先可以把原序列\(A_i\)转化成差分序列\(B_i\)去做. 这样对于区间加一个等差数列\((l,r,a_0,d)\),就可以转化为\(B_{l-1}\)+=\(a_0\),\(B ...
最新文章
- SharePoint技术峰会2009视频(6)
- SAP生产订单管理与分析实例
- unity官方教程-TANKS(一)
- AmazeUI基本样式
- [PAT乙级]1032 挖掘机技术哪家强
- Java8的产品周期_java8的时间和`Date`的对比
- 香港政府活用无人机,正式应用到调研检测领域
- Leetcode每日一题:1365.how-many-numbers-are-smaller-than-the-current-number(有多少小于当前数字的数字)
- HDFS最基本的操作命令 和基本配置
- python函数定义及调用-python函数的定义和调用 | 酷python
- [MFC] 向文本编辑框写入数据与从其中读取数据
- 从入坑到入门 | 龙蜥开发者说第2期
- Photoshop CS4 卡通角色的设计与绘制(2)
- 如何将Mac升级到High Sierra
- python下载CVF论文
- C++ Tetris俄罗斯方块
- 详解ZStack Cloud v4.0:自研VPC网络模型实践指南
- 使用Git管理多媒体文件
- Bert 得到中文词向量
- let、const、var的区别
热门文章
- isp mpls专线
- nginx的配置总结
- CentOS修改时区
- Linux下高效实用的grep命令
- Shell脚本-tr 将大写字母变为小写
- 深入解读Linux进程调度系列(6)——抢占与非抢占
- SQlite数据库的C编程接口(五) 便捷函数(Convenience Functions) ——《Using SQlite》读书笔记
- oracle字符串转日期比较大小写,【varchar】oracle中比较日期大小日期定义的是varchar2类型的......
- java中的值传递与引用传递
- window.location.href不打开新窗口_在使用网站时,什么情况该用新窗口打开?