CF535E Tavas and Pashmaks
今天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的更多相关文章
- CF535E Tavas and Pashmaks 单调栈、凸包
传送门 题意:有一场比赛,$N$个人参加.每个人有两种参数$a,b$,如果存在正实数$A,B$使得$\frac{A}{a_i} + \frac{B}{b_i}$在$i=x$处取得最大值(可以有多个最大 ...
- 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 ...
- Codeforces 536C Tavas and Pashmaks(凸壳)
题目链接 Tavas and Pashmaks 题目大意:n个人比赛,游泳和赛跑,游泳距离S,赛跑R.每个人对应两个速度(陆地和水上的),如果存在S,R,使得第i个人胜利,那么输出i 题目要求输出所有 ...
- 【Cf #299 C】Tavas and Pashmaks(单调栈,凸性)
一个经典的二维数点模型,如果某个人 $ x $ 两个速度都比另一个人 $ y $ 大,显然 $y$ 是不可能成为winner的. 但这里只考虑两个人$x$,$y$在两个属性各有千秋的时候,一定存在正整 ...
- 【Codeforces Round #299 (Div. 2) E】Tavas and Pashmaks
[链接] 我是链接,点我呀:) [题意] 游泳+跑步比赛. 先游泳,然后跑步. 最先到终点的人是winner. 但是现在游泳的距离和跑步的距离长度都不确定. S和R. 给你n个人,告诉你每个人游泳的速 ...
- [CSP-S模拟测试]:导弹袭击(数学+凸包+单调栈)
题目背景 $Guess$准备向敌军阵地发起进攻了!$Guess$的武器是自动制导导弹.然而在机房是不允许游戏的,所以班长$XZY$对游戏界面进行了降维打击,结果... 题目描述 众所周知,环境因素对导 ...
- DP的优化总结
一.预备知识 \(tD/eD\) 问题:状态 t 维,决策 e 维.时间复杂度\(O(n^{e+t})\). 四边形不等式: 称代价函数 w 满足凸四边形不等式,当:\(w(a,c)+w(b,d)\l ...
- Codeforces Round #299 Div2 解题报告
这场比赛并没有打现场,昨天晚上做了ABCD四道题,今天做掉了E题 以前还没有过切完一场比赛的所有题呢~爽~ A. Tavas and Nafas Today Tavas got his test ...
- C. Tavas and Karafs 二分查找+贪心
C. Tavas and Karafs #include <iostream> #include <cstdio> #include <cstring> #incl ...
随机推荐
- [C++] 用Xcode来写C++程序[6] Name visibility
用Xcode来写C++程序[6] Name visibility 此小结包括了命名空间的一些使用细节 命名空间 #include <iostream> using namespace st ...
- 铁乐学Python_day07_集合and浅谈深浅copy
1.[List补充] 在循环一个列表时,最好不要使用元素和索引进行删除操作,一旦删除,索引会随之改变,容易出错. 如果想不出错,可以采用倒着删除的方法,因为倒着删除进行的话,只是后面元素的位置发生了变 ...
- mysqlDOS命令
MySQL : 1.安装mysql服务:mysqld install 2.删除mysql服务:sc delete mysql 3.启动mysql服务:net start mysql 4.初始化设置密码 ...
- LVS 原理(调度算法、四种模式、四层负载均衡和七层 的区别)
参考文档:http://blog.csdn.net/ioy84737634/article/details/44916241 目录 lvs的调度算法 lvs的四种模式 四层均衡负载和七层的区别 1.l ...
- jiekou
接口 新的接口 package cn.eangaie.jingdong.controller; import cn.eangaie.jingdong.entity.Result; import c ...
- 【转】【Flex】#010 操作XML文件(E4X)
该教程转载来自于:http://blog.chinaunix.net/uid-14767524-id-2785506.html [看到这边文章的位置,具体原作者未知] 经过一些排版的修改,其他内 ...
- PHP设计模式系列 - 单例
单例模式 通过提供自身共享实例的访问,单例设计模式用于限制特定对象只能被创建一次. 使用场景 例如数据库实例,一般都会走单例模式. 单例模式可以减少类的实例化 代码:来源InitPHP框架,先检测类有 ...
- 【洛谷】【堆+模拟】P2278 操作系统
from HNOI2003 [题目描述:] 写一个程序来模拟操作系统的进程调度.假设该系统只有一个CPU,每一个进程的到达时间,执行时间和运行优先级都是已知的.其中运行优先级用自然数表示,数字越大,则 ...
- ES6新特性5:类(Class)和继承(Extends)
本文摘自ECMAScript6入门,转载请注明出处. 一.类(Class) 1.基本语法 JavaScript语言的传统方法是通过构造函数,定义并生成新对象.下面是一个例子 function Poin ...
- PAT乙级1032
1032 挖掘机技术哪家强 (20 分) 为了用事实说明挖掘机技术到底哪家强,PAT 组织了一场挖掘机技能大赛.现请你根据比赛结果统计出技术最强的那个学校. 输入格式: 输入在第 1 行给出不超过 ...