Codeforces 793C - Mice problem(几何)
题目链接:http://codeforces.com/problemset/problem/793/C
题目大意:给你一个捕鼠器坐标,和各个老鼠的的坐标以及相应坐标的移动速度,问你是否存在一个时间点可以关闭捕鼠器抓住所有的老鼠,误差不能超过1e-6。
解题思路:可以把每个老鼠进入捕鼠器的时间和出捕鼠器的时间计算出来,那就可以把一只进出捕鼠器时间当成一个集合,把各个集合求交集得到的就是最后可以捕到所有老鼠的时间范围,再取交集左边界时间就可以了。
千万要注意一点:老鼠不能在边界上被捕捉,表示之前没看到足足想了一个小时。。。
所以最后得出来的时间集合的左边界l肯定是不能等于右边界r的,所以要判定r-l>=1e-11,取1e-11是为了提高精度。
如下面这一组样例:
1
99998 99998 99999 99999
0 0 99999 100000
最后得出的l=0.9999899999 r=0.9999900000
如果只取到1e-7的话那四舍五入后l和r相等都是0.9999900,这显然错误了,所以精度尽可能取高一点。
#include<iostream>
#include<algorithm>
using namespace std;
double l=,r=1e11; void updata(int pos,int lb,int rb,int v){
if(v==){
if(pos>lb&&pos<rb)
return;
r=-;
}
double t1=(double)(lb-pos)/v,t2=(double)(rb-pos)/v;
if(t1>t2)
swap(t1,t2);
l=max(l,t1);
r=min(r,t2);
} int main(){
int n;
int x1,y1,x2,y2;
scanf("%d",&n);
scanf("%d %d %d %d",&x1,&y1,&x2,&y2);
for(int i=;i<=n;i++){
int x,y,vix,viy;
scanf("%d %d %d %d",&x,&y,&vix,&viy);
updata(x,x1,x2,vix);
updata(y,y1,y2,viy);
}
if(r-l>=1e-&&r>)
printf("%.10lf\n",l);
else
printf("-1\n");
return ;
}
Codeforces 793C - Mice problem(几何)的更多相关文章
- codeforces 340C Tourist Problem
link:http://codeforces.com/problemset/problem/340/C 开始一点也没思路,赛后看别人写的代码那么短,可是不知道怎么推出来的啊! 后来明白了. 首先考虑第 ...
- codeforces B. Routine Problem 解题报告
题目链接:http://codeforces.com/problemset/problem/337/B 看到这个题目,觉得特别有意思,因为有熟悉的图片(看过的一部电影).接着让我很意外的是,在纸上比划 ...
- Codeforces 527D Clique Problem
http://codeforces.com/problemset/problem/527/D 题意:给出一些点的xi和wi,当|xi−xj|≥wi+wj的时候,两点间存在一条边,找出一个最大的集合,集 ...
- Codeforces 706C - Hard problem - [DP]
题目链接:https://codeforces.com/problemset/problem/706/C 题意: 给出 $n$ 个字符串,对于第 $i$ 个字符串,你可以选择花费 $c_i$ 来将它整 ...
- Codeforces 1096D - Easy Problem - [DP]
题目链接:http://codeforces.com/problemset/problem/1096/D 题意: 给出一个小写字母组成的字符串,如果该字符串的某个子序列为 $hard$,就代表这个字符 ...
- CodeForces 687A NP-Hard Problem
Portal:http://codeforces.com/problemset/problem/687/A 二分图染色 好模板题 有SPJ 值得注意的是,因为C++的奇妙的运算机制 若在vector变 ...
- 【codeforces 793C】Mice problem
[题目链接]:http://codeforces.com/contest/793/problem/C [题意] 给你每个点x轴移动速度,y轴移动速度; 问你有没有某个时刻,所有的点都"严格& ...
- Codeforces Gym 100342J Problem J. Triatrip 求三元环的数量 bitset
Problem J. Triatrip Time Limit: 20 Sec Memory Limit: 256 MB 题目连接 http://codeforces.com/gym/100342/at ...
- Codeforces Gym 100342C Problem C. Painting Cottages 转化题意
Problem C. Painting CottagesTime Limit: 2 Sec Memory Limit: 256 MB 题目连接 http://codeforces.com/gym/10 ...
随机推荐
- 【贪心】【CF1061B】 Views Matter
Description 给定一个只有一行的,由 \(n\) 组小正方体组成的方块,每组是由 \(a_i\) 块小正方体竖直堆叠起来的,求最多能抽掉多少块使得它的左视图和俯视图不变.方块不会掉落 Inp ...
- 共享内存shm*(生产者和消费者)
//heads.h #ifndef HEAD_H #define HEAD_H #include <iostream> #include <sys/shm.h> //share ...
- Kubernetes--kubectl
一.Kubectl命令行说明 类型 命令 描述 基础命令 create 通过文件名或标准输入创建资源 expose 将一个资源公开为一个新的kubernetes服务 run 创建并运行一个特定的镜 ...
- nc命令的常用参数介绍
nc命令的常用参数介绍 作者:尹正杰 版权声明:原创作品,谢绝转载!否则将追究法律责任. 想必做运维的应该在网络安全上都对一些开源软件都应该是相当的了解吧,比如tcpdump,namp等神奇,今天要给 ...
- logstash定义表达式
例如: echo '[2018/02/02 08:34:43.032]' >> tomcat_catalina.out 过滤方式 "message" => &qu ...
- python3使用stmplib发送邮件
代码如下: import smtplib from email.mime.text import MIMEText from email.header import Header from email ...
- Intellij IDEA 2017 控制台打印换行
Intellij IDEA 2017 控制台打印的内容超过屏幕宽度了,请问怎么自动换行? 记得重启idea
- [转载]学习C语言基本思路与参考书籍
http://zhuanlan.zhihu.com/linjr/19694823 计算机行业发展非常快,大学里的教育基本都跟不上实际的社会需求.如果你所在的学校还在指定大家使用谭浩强的教材,或使用VC ...
- JS日历,可获得指定日期周数及星期几
需求来自一个朋友:编写一个简易日历.在文本框中输入要查找的日期,程序可以计算出这一天处在该年份的第几周,并且能判断出这一天到底是星期几. 应为要有交互,选择了Js来实现,也算是 结对编程 的初试吧. ...
- 20155222 2016-2017-2 《Java程序设计》第7周学习总结
20155222 2016-2017-2 <Java程序设计>第7周学习总结 教材学习内容总结 使用基于方法的语法在 Enumerable 类中调用 Where 方法时(像在 LINQ t ...