今天Fakehu考的T1。

大致意思就是有n个人每个人有两个速度\(v_1,v_2\),比赛有两个路程\(A,B\),最后时间是\(A/v_1+B/v_2\)。求每个人是否可能成为冠军中的一个。

显然不需要考虑\(A,B\)这两个值,可以钦定\(A=1\)。那么\(t=B/v_2+1/v_1\)。就是一条直线的形式。

然后求一个半平面交就行了。注意这个半平面交是在\(x\geq 0\)部分的。

细节忽略。

#include<bits/stdc++.h>
#define il inline
#define vd void
#define ll long long
#define db long double
il int gi(){
int x=0,f=1;char ch=getchar();
while(!isdigit(ch)){if(ch=='-')f=-1;ch=getchar();}
while(isdigit(ch))x=x*10+ch-'0',ch=getchar();
return x*f;
}
std::set<std::pair<int,int> >M;
struct yyb{int x,y,i;db k,b;}s[300010],stk[300010];
il bool cmp_k(const yyb&a,const yyb&b){
if(a.y!=b.y)return a.y<b.y;
else return a.x>b.x;
}
il bool cmp_i(const yyb&a,const yyb&b){return a.i<b.i;}
int main(){
int n=gi();
for(int i=1;i<=n;++i)s[i].x=gi(),s[i].y=gi(),s[i].i=i,s[i].k=1000000000.0/s[i].y,s[i].b=1000000000.0/s[i].x;
std::sort(s+1,s+n+1,cmp_k);
int top=0;
stk[++top]=(yyb){0,0,0,1e18,0};
for(int i=1;i<=n;++i){
if(s[i].y==s[i-1].y)continue;
while(top>1&&stk[top].y!=stk[top-1].y&&(-(s[i].b-stk[top].b)/(s[i].k-stk[top].k)+1e-15<-(stk[top].b-stk[top-1].b)/(stk[top].k-stk[top-1].k)))--top;
stk[++top]=s[i];
}
std::sort(s+1,s+n+1,cmp_i);
for(int i=1;i<=top;++i)M.insert(std::make_pair(stk[i].x,stk[i].y));
for(int i=1;i<=n;++i)if(M.find(std::make_pair(s[i].x,s[i].y))!=M.end())printf("%d ",i);
return 0;
}

CF535E Tavas and Pashmaks的更多相关文章

  1. CF535E Tavas and Pashmaks 单调栈、凸包

    传送门 题意:有一场比赛,$N$个人参加.每个人有两种参数$a,b$,如果存在正实数$A,B$使得$\frac{A}{a_i} + \frac{B}{b_i}$在$i=x$处取得最大值(可以有多个最大 ...

  2. Codeforces Round #299 (Div. 1)C. Tavas and Pashmaks (凸壳)

    C. Tavas and Pashmaks   Tavas is a cheerleader in the new sports competition named "Pashmaks&qu ...

  3. Codeforces 536C Tavas and Pashmaks(凸壳)

    题目链接 Tavas and Pashmaks 题目大意:n个人比赛,游泳和赛跑,游泳距离S,赛跑R.每个人对应两个速度(陆地和水上的),如果存在S,R,使得第i个人胜利,那么输出i 题目要求输出所有 ...

  4. 【Cf #299 C】Tavas and Pashmaks(单调栈,凸性)

    一个经典的二维数点模型,如果某个人 $ x $ 两个速度都比另一个人 $ y $ 大,显然 $y$ 是不可能成为winner的. 但这里只考虑两个人$x$,$y$在两个属性各有千秋的时候,一定存在正整 ...

  5. 【Codeforces Round #299 (Div. 2) E】Tavas and Pashmaks

    [链接] 我是链接,点我呀:) [题意] 游泳+跑步比赛. 先游泳,然后跑步. 最先到终点的人是winner. 但是现在游泳的距离和跑步的距离长度都不确定. S和R. 给你n个人,告诉你每个人游泳的速 ...

  6. [CSP-S模拟测试]:导弹袭击(数学+凸包+单调栈)

    题目背景 $Guess$准备向敌军阵地发起进攻了!$Guess$的武器是自动制导导弹.然而在机房是不允许游戏的,所以班长$XZY$对游戏界面进行了降维打击,结果... 题目描述 众所周知,环境因素对导 ...

  7. DP的优化总结

    一.预备知识 \(tD/eD\) 问题:状态 t 维,决策 e 维.时间复杂度\(O(n^{e+t})\). 四边形不等式: 称代价函数 w 满足凸四边形不等式,当:\(w(a,c)+w(b,d)\l ...

  8. Codeforces Round #299 Div2 解题报告

    这场比赛并没有打现场,昨天晚上做了ABCD四道题,今天做掉了E题 以前还没有过切完一场比赛的所有题呢~爽~ A. Tavas and Nafas   Today Tavas got his test ...

  9. C. Tavas and Karafs 二分查找+贪心

    C. Tavas and Karafs #include <iostream> #include <cstdio> #include <cstring> #incl ...

随机推荐

  1. REST Framework 的分页

    分页: PageNumberPagination from rest_framework.pagination import PageNumberPagination 导入分页之后你要实例化分页这个对 ...

  2. ETL探索之旅

    ETL(Ectract Transform Load) 抽取-转换-加载 ETL 商业软件: Informatica IBM DataStage Microsoft SSIS Oracle  ODI ...

  3. 编写带有点击特效的UIButton

    编写带有点击特效的UIButton 效果: 源码: // // ViewController.m // Button // // Created by XianMingYou on 15/1/18. ...

  4. UNIX高级环境编程(2)FIle I/O - 原子操作、共享文件描述符和I/O控制函数

    引言: 本篇通过对open函数的讨论,引入原子操作,多进程通信(共享文件描述符)和内核相关的数据结构. 还会讨论集中常见的文件IO控制函数,包括: dup和dup2 sync,fsync和fdatas ...

  5. 【笔记】python的sqlalchemy数据库连接池原理的说明

    sqlalchemy数据库连接池的使用方式是延迟初始化,就是说一开始你调用create_engine(...)后创建的那个数据库池是空的,你后面通过session.connection()或者engi ...

  6. css3实现 依次出现三个点(一般用于提示加载中。。。 提交中。。。)

    <a href="javascript:" class="login">登录中<span class="dotting"& ...

  7. python中pandas里面的dataframe数据的筛选小结

    pandas大家用的都很多,像我这种用的不够熟练,也不够多的就只能做做笔记,尽量留下点东西吧. 筛选行: a. 按照列的条件筛选 df = pandas.DataFrame(...) # suppos ...

  8. linux系统下安装两个或多个tomcat

    编辑环境变量:vi /etc/profile 加入以下代码(tomcat路径要配置自己实际的tomcat安装目录) ##########first tomcat########### CATALINA ...

  9. k8s1.8 ingress 配置

    kubectl create secret tls ingress-secret-fengjian --key /data/sslkey/cinyi.key --cert /data/sslkey/c ...

  10. Ubuntu16.04如何彻底删除Apache2

    虽然作为运维人员通常情况不建议随意删除Linux系统上面的任何软件,主要指生产环境下,测试环境也不能太随意. 但是有的时候,比如系统环境要变一变,我们就需要替换一些淘汰的软件,对此我们一般都会删除. ...