题目链接:点击查看

题目大意:在长度为 n 的数轴上给出两个人的初始位置和速度,问使得每个位置至少被一个人走过的时间是多少

题目分析:分类讨论题目,分四种情况讨论即可,设 p1 < p2:

  1. p1 走完全程
  2. p2 走完全程
  3. p1 向右走,p2 向左走
  4. 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(分类讨论+二分)相关推荐

  1. codeforces数学1700[CodeForces 1336B[分类讨论+二分]CodeForces - 1301C[组合计数的减法原理]]

    CodeForces 1336B Xenia and Colorful Gems 题目大意:给你nrn_rnr​个xix_ixi​,ngn_gng​个yiy_iyi​,nbn_bnb​个ziz_izi ...

  2. 2020icpc上海(重温经典)

    2020icpc上海(重温经典) 导语 涉及的知识点 题目 B D G H I M 参考文献 导语 涉及的知识点 思维,几何,搜索 链接:第 45 届国际大学生程序设计竞赛(ICPC)亚洲区域赛(上海 ...

  3. 分类讨论 ---- 2020 icpc 上海 Walker (二分 or 思维分类讨论)

    题目链接 题目大意: 就是两个人在坐标轴上面,有起始的坐标p1,p2p1,p2p1,p2,和速度v1,v2v1,v2v1,v2,问你访问完这长度为nnn的数轴最短时间是多少? 解题思路: 大佬有直接二 ...

  4. CF1471 D - Strange Definition(思维,分类讨论,lcm,gcd的性质,数论)

    整理的算法模板合集: ACM模板 点我看算法全家桶系列!!! 实际上是一个全新的精炼模板整合计划 Codeforces Round #694 (Div. 2) D 很好的一道数论思维题 D - Str ...

  5. Unfair contest 模拟-分类讨论

    题意 : 两人比赛,n个裁判,给分范围[1,h][1, h][1,h],去掉s个最高分和t个最低分,给出n - 1个裁判的给分,第n个裁判想让第1个人赢,并且最小化给1的分数a[n]a[n]a[n] ...

  6. 【UOJ#33】【UR #2】树上GCD(长链剖分/根号分类讨论)

    [UOJ#33][UR #2]树上GCD 求解树上两个点到lca的距离的最大公约数是k的对数 首先我们很容易就想到莫比乌斯反演,那么利用倍数形式,我们只需要求解是i的倍数的对数. 考虑枚举lca,这个 ...

  7. uoj#246. 【UER #7】套路(dp+分块?分类讨论?)

    题目链接 分析: 目前为止我只能理解dp部分 我就喜欢这种单纯不做作的题目 一看名字就明白了这道题的本质 中二的题目描述 很显然,我们的关键就是求出最小相似度 朴素算法n^4 如果我们现在有一个权值数 ...

  8. Vasya and Multisets CodeForces - 1051C 模拟|分类讨论

    题意:把数组分成两个集合 每个集合中元素数量为1的个数相同(此个数可以是0) 分析: 这类问题就是要各种可能情况考虑到     然后分类讨论     完整地正确分类就AC     否则gg 如果数量为 ...

  9. P3842 [TJOI2007]线段(线性dp,分类讨论)

    P3842 [TJOI2007]线段 题意 [TJOI2007]线段 题目描述 在一个 n×nn \times nn×n 的平面上,在每一行中有一条线段,第 iii 行的线段的左端点是(i,Li)(i ...

最新文章

  1. wince 6.0 嵌入式开发指导
  2. 这个免费的交互式课程在一小时内学习JavaScript
  3. 匿名函数自我调用_Python中的匿名函数及递归思想简析
  4. python列表常用方法实践_python 列表list 常用方法
  5. 题解 P3978 【[TJOI2015]概率论】
  6. 忙了12周,手机摄像头模组测试PCB板终于画出来了。
  7. ipython控制台 绘图 后端_如何面试Python后端工程师?
  8. jQuery笔记——jQuery选择器实例应用
  9. jenkins教程_1 简介
  10. 稳的一比,鸿蒙系统霸榜Github!
  11. 苹果手机微信提示音应该怎么更换?
  12. (升级版)基本粒子结构以及宇宙现象的徦说
  13. BIM的发展现状与技术优势
  14. oracle 数据库表的字段类型修改为clob类型报错及解决方法
  15. 搭建一个全功能 GPS 追踪系统
  16. 归一化处理的目的和意义及其MATLAB方法
  17. Event loop/浏览器的事件循环机制
  18. 2021年山东省安全员C证考试及山东省安全员C证试题及解析
  19. NVIDIA支持CUDA的显卡选型简述
  20. 【BLDC理论篇】直流无刷电机的基本原理

热门文章

  1. 安装软件要求输入服务器配置信息,信息技术考试软件配置安装与操作规范(管理服务端与客户端)(30页)-原创力文档...
  2. jdbctemplate mysql 分页查询 返回list对象_spring jdbctemplate调用存储过程,返回list对象...
  3. NIO和BIO如何影响应用程序的设计-数据处理
  4. DefaultListableBeanFactory 对配置lazy-init 属性单态Bean 的预实例化
  5. 分布式文件系统研究-什么是分布式文件系统
  6. 百万数据报表导出:使用SXSSFWorkbook完成百万数据报表打印
  7. 定义和使用含有泛型的接口
  8. ReactJS入门之生命周期
  9. 基于JWT的API权限校验:需求分析
  10. SpringBoot高级-消息-JMSAMQP简介