2020ICPC(上海) - Walker(分类讨论+二分)
题目链接:点击查看
题目大意:在长度为 n 的数轴上给出两个人的初始位置和速度,问使得每个位置至少被一个人走过的时间是多少
题目分析:分类讨论题目,分四种情况讨论即可,设 p1 < p2:
- p1 走完全程
- p2 走完全程
- p1 向右走,p2 向左走
- p1 向左走,p2 向右走,最后共同走完 p1 ~ p2 这段区间
前三种都可以推出公式快速得出,对于第四种需要二分确定答案,可以二分断点位置 x,这样问题就变成了:p1 走完 [ 0 , x ] 这段区间,p2 走完 [ x , n ] 这段区间,类比于前三种情况贪心去讨论就好了
为了避免二分被卡精度,可以计算一下时间复杂度将 while 改成 for 即可
代码:
// #pragma GCC optimize(2)
// #pragma GCC optimize("Ofast","inline","-ffast-math")
// #pragma GCC target("avx,sse2,sse3,sse4,mmx")
#include<iostream>
#include<cstdio>
#include<string>
#include<ctime>
#include<cmath>
#include<cstring>
#include<algorithm>
#include<stack>
#include<climits>
#include<queue>
#include<map>
#include<set>
#include<sstream>
#include<cassert>
#include<bitset>
#include<unordered_map>
using namespace std;typedef long long LL;typedef unsigned long long ull;const int inf=0x3f3f3f3f;const int N=1e6+100;const double eps=1e-10;int sgn(double x)
{if(fabs(x)<=eps)return 0;else if(x<0)return -1;elsereturn 1;
}int main()
{
#ifndef ONLINE_JUDGE
// freopen("data.in.txt","r",stdin);
// freopen("data.out.txt","w",stdout);
#endif
// ios::sync_with_stdio(false);int w;cin>>w;while(w--){double n,p1,p2,v1,v2;scanf("%lf%lf%lf%lf%lf",&n,&p1,&v1,&p2,&v2);if(sgn(p1-p2)>0){swap(p1,p2);swap(v1,v2);}double ans=1e10;ans=min(ans,max((n-p1)/v1,p2/v2));//p1向右,p2向左ans=min(ans,(min(n-p1,p1)+n)/v1);//p1走全程ans=min(ans,(min(n-p2,p2)+n)/v2);//p2走全程double l=p1,r=p2;auto check=[&](double p){double t1=(min(p-p1,p1)+p)/v1;double t2=(min(p2-p,n-p2)+(n-p))/v2;ans=min(ans,max(t1,t2));return sgn(t1-t2)<0;};for(int t=0;t<1000;t++)//二分分界点{double mid=(l+r)/2;if(check(mid))//p1先到分界点l=mid;//分界点右移elser=mid;}printf("%.10f\n",ans);}return 0;
}
2020ICPC(上海) - Walker(分类讨论+二分)相关推荐
- codeforces数学1700[CodeForces 1336B[分类讨论+二分]CodeForces - 1301C[组合计数的减法原理]]
CodeForces 1336B Xenia and Colorful Gems 题目大意:给你nrn_rnr个xix_ixi,ngn_gng个yiy_iyi,nbn_bnb个ziz_izi ...
- 2020icpc上海(重温经典)
2020icpc上海(重温经典) 导语 涉及的知识点 题目 B D G H I M 参考文献 导语 涉及的知识点 思维,几何,搜索 链接:第 45 届国际大学生程序设计竞赛(ICPC)亚洲区域赛(上海 ...
- 分类讨论 ---- 2020 icpc 上海 Walker (二分 or 思维分类讨论)
题目链接 题目大意: 就是两个人在坐标轴上面,有起始的坐标p1,p2p1,p2p1,p2,和速度v1,v2v1,v2v1,v2,问你访问完这长度为nnn的数轴最短时间是多少? 解题思路: 大佬有直接二 ...
- CF1471 D - Strange Definition(思维,分类讨论,lcm,gcd的性质,数论)
整理的算法模板合集: ACM模板 点我看算法全家桶系列!!! 实际上是一个全新的精炼模板整合计划 Codeforces Round #694 (Div. 2) D 很好的一道数论思维题 D - Str ...
- Unfair contest 模拟-分类讨论
题意 : 两人比赛,n个裁判,给分范围[1,h][1, h][1,h],去掉s个最高分和t个最低分,给出n - 1个裁判的给分,第n个裁判想让第1个人赢,并且最小化给1的分数a[n]a[n]a[n] ...
- 【UOJ#33】【UR #2】树上GCD(长链剖分/根号分类讨论)
[UOJ#33][UR #2]树上GCD 求解树上两个点到lca的距离的最大公约数是k的对数 首先我们很容易就想到莫比乌斯反演,那么利用倍数形式,我们只需要求解是i的倍数的对数. 考虑枚举lca,这个 ...
- uoj#246. 【UER #7】套路(dp+分块?分类讨论?)
题目链接 分析: 目前为止我只能理解dp部分 我就喜欢这种单纯不做作的题目 一看名字就明白了这道题的本质 中二的题目描述 很显然,我们的关键就是求出最小相似度 朴素算法n^4 如果我们现在有一个权值数 ...
- Vasya and Multisets CodeForces - 1051C 模拟|分类讨论
题意:把数组分成两个集合 每个集合中元素数量为1的个数相同(此个数可以是0) 分析: 这类问题就是要各种可能情况考虑到 然后分类讨论 完整地正确分类就AC 否则gg 如果数量为 ...
- P3842 [TJOI2007]线段(线性dp,分类讨论)
P3842 [TJOI2007]线段 题意 [TJOI2007]线段 题目描述 在一个 n×nn \times nn×n 的平面上,在每一行中有一条线段,第 iii 行的线段的左端点是(i,Li)(i ...
最新文章
- wince 6.0 嵌入式开发指导
- 这个免费的交互式课程在一小时内学习JavaScript
- 匿名函数自我调用_Python中的匿名函数及递归思想简析
- python列表常用方法实践_python 列表list 常用方法
- 题解 P3978 【[TJOI2015]概率论】
- 忙了12周,手机摄像头模组测试PCB板终于画出来了。
- ipython控制台 绘图 后端_如何面试Python后端工程师?
- jQuery笔记——jQuery选择器实例应用
- jenkins教程_1 简介
- 稳的一比,鸿蒙系统霸榜Github!
- 苹果手机微信提示音应该怎么更换?
- (升级版)基本粒子结构以及宇宙现象的徦说
- BIM的发展现状与技术优势
- oracle 数据库表的字段类型修改为clob类型报错及解决方法
- 搭建一个全功能 GPS 追踪系统
- 归一化处理的目的和意义及其MATLAB方法
- Event loop/浏览器的事件循环机制
- 2021年山东省安全员C证考试及山东省安全员C证试题及解析
- NVIDIA支持CUDA的显卡选型简述
- 【BLDC理论篇】直流无刷电机的基本原理
热门文章
- 安装软件要求输入服务器配置信息,信息技术考试软件配置安装与操作规范(管理服务端与客户端)(30页)-原创力文档...
- jdbctemplate mysql 分页查询 返回list对象_spring jdbctemplate调用存储过程,返回list对象...
- NIO和BIO如何影响应用程序的设计-数据处理
- DefaultListableBeanFactory 对配置lazy-init 属性单态Bean 的预实例化
- 分布式文件系统研究-什么是分布式文件系统
- 百万数据报表导出:使用SXSSFWorkbook完成百万数据报表打印
- 定义和使用含有泛型的接口
- ReactJS入门之生命周期
- 基于JWT的API权限校验:需求分析
- SpringBoot高级-消息-JMSAMQP简介