题解:CF780B The Meeting Place Cannot Be Changed
这道题一看就是 二分 板子题。
当然由于精度原因,最好由原来的二分模板转换成这个。
while ((w - t) > 0.000001) {
mid = (t + w) / 2.0 ;
if (check (mid)) w = mid ;
else t = mid ;
}
至于 check 函数,十分简单。二分出的时间 \(t\),先计算每个人能够到达的区间 \([x_i-tv_i \ ,\ x+tv_i]\),再判断是否有公共交集。
判断公共交集更简单,算出最小区间 \(mi\) 和最大区间 \(ma\),如果最大交集 \(ma\) 小于等于最小交集 \(mi\),则成立。
放出代码:
#include <bits/stdc++.h>
#define int long long
using namespace std ;
int n ;
double a [60010] , b [60010] , mid , t , w , bao ;
bool check (double x) {
double ma = 0 , mi = 2e9 ;
for (int i = 1 ; i <= n ; i ++) {
mi = min (mi , a [i] + b [i] * x) ;
ma = max (ma , a [i] - b [i] * x) ;
}
return ma <= mi ;
return 0 ;
}
main () {
ios::sync_with_stdio (false) ;
cin.tie (NULL) ; cout.tie (NULL) ;
cin >> n ;
for (int i = 1 ; i <= n ; i ++)
cin >> a [i] , w = max (w , a [i]) ;
for (int i = 1 ; i <= n ; i ++) cin >> b [i] ;
t = 0 ;
while ((w - t) > 0.000001) {
mid = (t + w) / 2.0 ;
if (check (mid)) w = mid ;
else t = mid ;
}
printf ("%.12lf" , t) ;
return 0 ;
}
注意:由于精度原因,样例数据会差大概 \(\pm 0.1\) 左右,这样子也算对的。
题解:CF780B The Meeting Place Cannot Be Changed的更多相关文章
- Cf Round #403 B. The Meeting Place Cannot Be Changed(二分答案)
The Meeting Place Cannot Be Changed 我发现我最近越来越zz了,md 连调程序都不会了,首先要有想法,之后输出如果和期望的不一样就从输入开始一步一步地调啊,tmd现在 ...
- codeforces 782B The Meeting Place Cannot Be Changed (三分)
The Meeting Place Cannot Be Changed Problem Description The main road in Bytecity is a straight line ...
- code force 403B.B. The Meeting Place Cannot Be Changed
B. The Meeting Place Cannot Be Changed time limit per test 5 seconds memory limit per test 256 megab ...
- Codeforces Round #403 (Div. 2, based on Technocup 2017 Finals) B. The Meeting Place Cannot Be Changed
地址:http://codeforces.com/contest/782/problem/B 题目: B. The Meeting Place Cannot Be Changed time limit ...
- AC日记——The Meeting Place Cannot Be Changed codeforces 780b
780B - The Meeting Place Cannot Be Changed 思路: 二分答案: 代码: #include <cstdio> #include <cstrin ...
- Codeforces 782B The Meeting Place Cannot Be Changed(二分答案)
题目链接 The Meeting Place Cannot Be Changed 二分答案即可. check的时候先算出每个点可到达的范围的区间,然后求并集.判断一下是否满足l <= r就好了. ...
- codeforces 782B The Meeting Place Cannot Be Changed+hdu 4355+hdu 2438 (三分)
B. The Meeting Place Cannot Be Change ...
- CodeForce-782B The Meeting Place Cannot Be Changed(高精度二分)
https://vjudge.net/problem/CodeForces-782B B. The Meeting Place Cannot Be Changed time limit per tes ...
- B. The Meeting Place Cannot Be Changed
B. The Meeting Place Cannot Be Changed time limit per test 5 seconds memory limit per test 256 megab ...
- 782B The Meeting Place Cannot Be Changed(二分)
链接:http://codeforces.com/problemset/problem/782/B 题意: N个点,需要找到一个点使得每个点到这个点耗时最小,每个点都同时开始,且都拥有自己的速度 题解 ...
随机推荐
- Thread.sleep 延时查询或延时查询前更新es缓存数据
Thread.sleep 延时查询或延时查询前更新es缓存数据 MQ消息的顺序性,或发送MQ的发送端未严格事务处理,可能存在数据未落库的情况,而导致接收端处理MQ消息的时候,查询为空. //demo1 ...
- 百度地图API 循环添加信息窗口问题
百度地图API循环添加信息窗口,会出现所有消息只显示在第一个窗口的位置的问题.并且信息内容相同 解决方法1 转载自 https://blog.csdn.net/zz_mm/article/detail ...
- 解决keil5仿真错误:Encountered an improper argument
--- title: 解决keil5仿真错误:Encountered an improper argument date: 2020-06-18 03:13:18 categories: tags: ...
- 『vulnhub系列』HACKABLE-II
『vulnhub系列』HACKABLE-II 下载地址: https://www.vulnhub.com/entry/hackable-ii,711/ 信息搜集: 使用nmap探测存活主机,发现主机开 ...
- SpringBoot+mail 轻松实现各类邮件自动推送
一.简介 在实际的项目开发过程中,经常需要用到邮件通知功能.例如,通过邮箱注册,邮箱找回密码,邮箱推送报表等等,实际的应用场景非常的多. 早期的时候,为了能实现邮件的自动发送功能,通常会使用 Java ...
- K210开发板学习笔记-点亮LED灯
1. 介绍 和 51 单片机非常像,实验的2个LED灯都是一头接了 +3.3v 电源,控制 LED灯亮的话需要 K210芯片 对应的管脚提供一个低电平. 管脚: 低电平-LED亮 高电平-LED灭 G ...
- npm基本操作手册
查看npm版本 npm -v 设置仓库地址 # 默认仓库地址 npm config set registry https://registry.npmjs.org/ # 淘宝镜像地址 npm conf ...
- v-if 和 v-show 有什么区别?
v-if 是真正的条件渲染,会控制这个 DOM 节点的存在与否.因为它会确保在切换过程中条件块内的事件监听器和子组件适当地被销毁和重建:也是惰性的:如果在初始渲染时条件为假,则什么也不做--直到条件第 ...
- new操作符具体干了什么呢?
new操作符的作用如下: 1.创建一个空对象2.由this变量引用该对象3.该对象继承该函数的原型4.把属性和方法加入到this引用的对象中5.新创建的对象由this引用,最后隐式地返回this.过程 ...
- css 选择器优先级?
!important > 行内样式(比重1000)> ID 选择器(比重100) > 类选择器(比重10) > 标签(比重1) > 通配符 > 继承 > 浏览 ...