http://acm.hdu.edu.cn/showproblem.php?pid=6581

一开始想了好几个假算法。但是启发了一下潘哥,假如时间知道的话就可以从头开始确定各个车的位置。那么直接 \(O(log_2\frac{10^9}{10^{-6}})\) 二分时间 \(t\) ,然后 \(O(n)\) 验证。

#include<bits/stdc++.h>
using namespace std;
typedef long long ll;
const int maxn = 100000;
const double eps = 1e-9;
int l[maxn + 5], s[maxn + 5], v[maxn + 5], n;
double pos[maxn]; inline bool check(double t) {
pos[n - 1] = t * v[n - 1] + s[n - 1] - l[n - 1];
for(int i = n - 2; i >= 0; --i) {
if(t * v[i] + s[i] >= pos[i + 1])
pos[i] = pos[i + 1] - l[i];
else
pos[i] = t * v[i] + s[i] - l[i];
}
return pos[0] + l[0] >= -eps;
} int main() {
#ifdef Yinku
freopen("Yinku.in", "r", stdin);
#endif // Yinku
while(~scanf("%d", &n)) {
++n;
for(int i = 0; i < n; ++i)
scanf("%d", l + i);
for(int i = 0; i < n; ++i)
scanf("%d", s + i), s[i] = -s[i];
for(int i = 0; i < n; ++i)
scanf("%d", v + i);
double l = 0.0, r = 1e9;
while(r - l >= eps) {
double mid = (l + r) / 2.0;
if(check(mid))
r = mid;
else
l = mid;
}
printf("%.8f\n", l);
}
return 0;
}

其实最后一辆车一定会和前面的某个连续区间内的车组成“动车组”,然后以“车头”的速度持续开到终点。枚举这个时间的最大值就知道最终谁是“动车组”的“车头”。

2019 Multi-University Training Contest 1 - 1004 - Vacation - 二分 - 思维的更多相关文章

  1. hdu 6301 Distinct Values (2018 Multi-University Training Contest 1 1004)

    Distinct Values Time Limit: 4000/2000 MS (Java/Others)    Memory Limit: 32768/32768 K (Java/Others)T ...

  2. HDU 6312.Game-博弈-签到题 (2018 Multi-University Training Contest 2 1004)

    2018 Multi-University Training Contest 2 6312.Game 博弈,直接官方题解,懒了. 考虑将游戏变成初始时只有2~n,如果先手必胜的话,那么先手第一步按这样 ...

  3. 2019 Multi-University Training Contest 1 D.Vacation(思维)

    题意:有n俩车行驶在一条道路上,每辆车有车长li,距离终点的距离si,速度vi,不能超出,并且驶过终点后会依旧保持原状态行驶,问最后一辆车过终点的时间. 思路:因为行驶过终点后还是要保持之前的行驶方式 ...

  4. dp - 2015 Multi-University Training Contest 2 1004 Delicious Apples

    Delicious Apples Problem's Link: http://acm.hdu.edu.cn/showproblem.php?pid=5303 Mean: 一条长为L的环形路上种着n棵 ...

  5. hdu6365 2018 Multi-University Training Contest 6 1004 Shoot Game

    http://acm.hdu.edu.cn/showproblem.php?pid=6365 细节处理 unique返回的是最后一位的后一位,因此从1开始的数组要减去(p+1) 结构体可以用unqiu ...

  6. HDU 6335.Problem D. Nothing is Impossible-思维题 (2018 Multi-University Training Contest 4 1004)

    6335.Problem D. Nothing is Impossible 题意:给你n道题目,m个人,每题有x个正确选项,y个错误选项,问你做对题数量最多的人做对了多少道题目. 如果一道题有y个错误 ...

  7. HDU 6322.Problem D. Euler Function -欧拉函数水题(假的数论题 ̄▽ ̄) (2018 Multi-University Training Contest 3 1004)

    6322.Problem D. Euler Function 题意就是找欧拉函数为合数的第n个数是什么. 欧拉函数从1到50打个表,发现规律,然后勇敢的水一下就过了. 官方题解: 代码: //1004 ...

  8. HDU 6301.Distinct Values-贪心、构造字典序最小的数列 (2018 Multi-University Training Contest 1 1004)

    HDU6301.Distinct Values 这个题就是给你区间要求区间内的数都不相同,然后要求是字典序最小,直接贪心走一遍,但是自己写的时候,思路没有错,初始化写挫了... 将区间按左端点小的排序 ...

  9. 2015 Multi-University Training Contest 2 1004 Delicious Apples(DP)

    pid=5303">题目链接 题意:长度为l 的环,有n棵果树,背包容量为k,告诉你k棵苹果树的id.以及每棵树上结的果子数.背包一旦装满要返回起点(id==0) 清空,问你至少走多少 ...

随机推荐

  1. MySQL系列理论知识

    内容: 1.视图 2.触发器 3.事务 4.存储过程 5.内置函数 6.流程控制 7.索引与慢查询优化 —————————————————————————————— 1.视图: 1.视图是什么: 视图 ...

  2. Linux性能优化从入门到实战:09 内存篇:Buffer和Cache

      Buffer 是缓冲区,而 Cache 是缓存,两者都是数据在内存中的临时存储.   避免跟文中的"缓存"一词混淆,而文中的"缓存",则通指内存中的临时存储 ...

  3. 读书笔记二、pandas之DataFrame

    注:DataFrame的构造方法与Series类似,只不过同时接受一条一维数据源,每一条都会成为单独的一列. 注意,返回的Series拥有原DataFrame 相同的索引,且其name属性也已经被相应 ...

  4. mv 移动或重命名文件

    1. 命令功能 mv:移动或改文件名 2. 语法格式 mv  [option]  source  dest mv 选项  源文件 目标文件 参数 参数说明 -f 如果目标文件存在,则不会询问而是直接覆 ...

  5. rabbit例子

    https://blog.csdn.net/csm201314/article/details/76377214 #include <SimpleAmqpClient/SimpleAmqpCli ...

  6. 12 | 为什么我的MySQL会“抖”一下? 学习记录

    <MySQL实战45讲>12 | 为什么我的MySQL会“抖”一下? 学习记录 http://naotu.baidu.com/file/15aa54cab2fa882c6a2a1dd52e ...

  7. FM

    1.FM (因子分解机) 2.FM的作用: (1)特征组合是许多机器学习建模过程中遇到的问题,如果对特征直接进行建模,很可能会忽略掉特征与特征之间的关联信息,因此,可以通过构建新的交叉特征这一特征组合 ...

  8. tomcat 部署指南

    下载与安装 个人建议不要使用发行版带的版本, 始终从主页来下载安装, 下载地址位于[1], 安装方法很简单, 直接解压即可, 建议解压到 /usr/local/ 目录, 再链接到 /usr/local ...

  9. Django ormmodel模型字段参考文章

    Model 字段参考 (Model field reference)¶ 本文档包含所有 字段选项 (field options) 的内部细节和 Django 已经提供的 field types . 参 ...

  10. Python全栈开发,Day2

    一.Pycharm的使用 1.创建项目 2.python调整字体大小随ctrl+鼠标滚轮上下滚动 3.python新建程序自动补全编码和环境 4.设置断点(在代码前面行号后面单击鼠标左键) 5.调试断 ...