正题

题目链接:https://codeforces.com/contest/536/problem/C


题目大意

nnn个人,第iii个人的游泳速度sis_isi​,跑步速度是rir_iri​。如果跑道长度是RRR,泳道长度是SSS那么一个人的用时就是Rri+Ssi\frac{R}{r_i}+\frac{S}{s_i}ri​R​+si​S​,在R/SR/SR/S不定的情况下然后求出所有可能是用时最短的人。

1≤n≤105,1≤si,ri≤1041\leq n\leq 10^5,1\leq s_i,r_i\leq 10^41≤n≤105,1≤si​,ri​≤104


解题思路

设k=RSk=\frac{R}{S}k=SR​,那么用时可以化为kri+1si\frac{k}{r_i}+\frac{1}{s_i}ri​k​+si​1​。

然后对于一个点(−1ri,1si)(-\frac{1}{r_i},\frac{1}{s_i})(−ri​1​,si​1​),我们可以视为用一条斜率为kkk的斜线去截这些点然后让截距最小。

直接维护一个凸壳就好了,然后注意因为R/SR/SR/S都是正数所以kkk也得是正数,所以要把后段丢掉。

时间复杂度:O(nlog⁡n)O(n\log n)O(nlogn)

当然还有一个更神奇的做法,因为对于一个sis_isi​我们只需要最大的rir_iri​所以有用的点数不超过10410^4104,可以直接平方暴算。


code

#include<cstdio>
#include<cstring>
#include<algorithm>
using namespace std;
const int N=2e5+10;
const double eps=1e-8;
struct node{double x,y;int id;
}q[N];
int n,top,s[N],ans[N],l[N];
bool cmp(node x,node y)
{return (x.x==y.x)?(x.y>y.y):(x.x<y.x);}
double slope(node a,node b)
{return (b.y-a.y)/(b.x-a.x);}
int main()
{scanf("%d",&n);for(int i=1;i<=n;i++){double x,y;q[i].id=i;scanf("%lf%lf",&x,&y);q[i].x=1e5/x;q[i].y=1e5/y;}sort(q+1,q+1+n,cmp);for(int i=1;i<=n;i++)if(q[i].x==q[i-1].x&&q[i].y==q[i-1].y)l[i]=l[i-1];else l[i]=i;for(int i=1;i<=n;i++){if(q[i].x==q[i+1].x)continue;while(top>1&&slope(q[s[top-1]],q[s[top]])-eps>slope(q[s[top-1]],q[i]))top--;s[++top]=i;}for(int i=1;i<=top;i++){for(int j=l[s[i]];j<=s[i];j++)ans[q[j].id]=1;if(q[s[i]].y<=q[s[i+1]].y)break;}for(int i=1;i<=n;i++)if(ans[i])printf("%d ",i);return 0;
}

CF536C-Tavas and Pashmaks【凸壳】相关推荐

  1. 利用OpenCV的convexHull和convexityDefects做凸包(凸壳)检测及凸包(凸壳)的缺陷检测

    图像处理开发需求.图像处理接私活挣零花钱,请加微信/QQ 2487872782 图像处理开发资料.图像处理技术交流请加QQ群,群号 271891601 要理解凸包(凸壳)检测,首无要知道什么是凸包(凸 ...

  2. P3291-[SCOI2016]妖怪【凸壳】

    正题 题目链接:https://www.luogu.com.cn/problem/P3291 题目大意 给出 nnn 个数字对 (atk,dnf)(atk,dnf)(atk,dnf),求一个(a,b) ...

  3. P5540-[BalkanOI2011]timeismoney|最小乘积生成树【最小生成树,凸壳】

    正题 题目链接:https://www.luogu.com.cn/problem/P5540 题目大意 给出nnn个点mmm条边边权是一个二元组(ai,bi)(a_i,b_i)(ai​,bi​),求出 ...

  4. YbtOJ#853-平面标记【整体二分,凸壳】

    正题 题目链接:http://www.ybtoj.com.cn/contest/119/problem/3 题目大意 给出nnn个点(xi,yi)(x_i,y_i)(xi​,yi​),mmm次给出(k ...

  5. YbtOJ#482-爬上山顶【凸壳,链表】

    正题 题目链接:https://www.ybtoj.com.cn/contest/116/problem/2 题目大意 nnn个点,xxx坐标递增,第iii个点向第jjj个点连边. 开始一个人在点ss ...

  6. P3309-[SDOI2014]向量集【线段树,凸壳】

    正题 题目链接:https://www.luogu.com.cn/problem/P3309 题目大意 nnn个操作 在序列末尾加入一个向量(x,y)(x,y)(x,y) 询问加入的第l∼rl\sim ...

  7. BZOJ.1007.[HNOI2008]水平可见直线(凸壳 单调栈)

    题目链接 可以看出我们是要维护一个下凸壳. 先对斜率从小到大排序.斜率最大.最小的直线是一定会保留的,因为这是凸壳最边上的两段. 维护一个单调栈,栈中为当前可见直线(按照斜率排序). 当加入一条直线l ...

  8. python库skimage 绘制二值图像的凸壳

    二值图像的凸壳指的是包围输入二值图像白色区域的最小的凸多边形的像素集合. skimage中的函数 from skimage.morphology import convex_hull_image ch ...

  9. 二值图像--形态学处理4 击中,边界提取,孔洞填充,连通分量提取,凸壳,细化,骨架,形态学重建...

    学习DIP第14天 转载请标明本文出处:http://blog.csdn.net/tonyshengtan,欢迎大家转载,发现博客被某些论坛转载后,图像无法正常显示,无法正常表达本人观点,对此表示很不 ...

最新文章

  1. java中数组的复制
  2. JHipster开发环境安装
  3. 中国开源大爆发进行时,你没掉队吧?
  4. 大数据与测试测量的结合
  5. a链接中 JS弹出确认对话框方法
  6. python内置字符串处理函数_Python内置的字符串处理函数
  7. 计算机主机采用的电子器件发展顺序,计算机采用的主机电子器件的发展顺序是什么?...
  8. Siki学院换装项目的MVC实现
  9. 最新!CCF-A类顶会WWW2020最佳论文出炉!OSU最佳论文
  10. 写给20几岁的女孩、男孩
  11. ps人像妆面修调教程
  12. 微信公共号开发教程java版——获取用户基本信息(UnionID机制)(七)
  13. 批量 m3u8文件转成MP4的方法--Python实现和 cmd 实现(推荐cmd)--仅粉丝可见
  14. 基于Orangpi Zero和Linux ALSA实现WIFI无线音箱(二)
  15. 健与美杂志健与美杂志社健与美编辑部2022年第7期目录
  16. PostgreSQL死锁了怎么办?
  17. 微信小程序如何添加业务域名
  18. 《数据结构》-第四章 串、数组和广义表(习题)
  19. electron 剪贴板 截图_electron屏幕截图功能
  20. aix还原Oracle数据库,【案例】Oracle数据恢复思路 Oracle FOR AIX

热门文章

  1. composer 查看php 版本_最常用的PHP版本:PHP 7.3取代7.2
  2. devexpress 中的checkboxlist怎么设置间距_HTML中怎么设置h1的字体样式你知道吗?关于设置h1标签的样式详解
  3. linux 信号_Linux中的信号处理机制 [四]
  4. 面试避坑手册之 Java字节流和字符流总结IO流!
  5. bootstrap grid php,bootstrap grid用法
  6. 网络被屏蔽了怎么办_预埋的网线不够长,怎么办?
  7. c语言配电自动化,我是电气工程及其自动化专业的要学C语言吗?
  8. [Redis6]新数据类型_Geospatial
  9. [Spring5]IOC容器_Bean管理XML方式_外部属性文件
  10. oracle多条件分组统计_多条件统计,就必须用Ifs系列函数,绝对的高能!