包裹快递 jzoj1396 二分
来源:互联网 发布:图布局算法 编辑:程序博客网 时间:2024/04/30 21:39
Description
小K成功地破解了密文。但是乘车到X国的时候,发现钱包被偷了,于是无奈之下只好作快递员来攒足路费去Orz教主……
一个快递公司要将n个包裹分别送到n个地方,并分配给邮递员小K一个事先设定好的路线,小K需要开车按照路线给的地点顺序相继送达,且不能遗漏一个地点。小K得到每个地方可以签收的时间段,并且也知道路线中一个地方到下一个地方的距离。若到达某一个地方的时间早于可以签收的时间段,则必须在这个地方停留至可以签收,但不能晚于签收的时间段,可以认为签收的过程是瞬间完成的。
为了节省燃料,小K希望在全部送达的情况下,车的最大速度越小越好,就找到了你给他设计一种方案,并求出车的最大速度最小是多少。
Solution
最大值最小就要想到二分答案了
我们二分一个速度然后按照速度模拟一遍看看是否满足条件就可以了
关于精度问题,开long double能解决的就不深入纠结了
Code
#include <stdio.h>#define rep(i, st, ed) for (int i = st; i <= ed; i += 1)#define min(x, y) (x)<(y)?(x):(y)#define max(x, y) (x)>(y)?(x):(y)#define db long double#define eps 0.0001#define N 300001int x[N], y[N], t[N];inline int check(db p, int n){ db now = 0.0; rep(i, 1, n){ now += t[i] / p; if (now > y[i]){ return 0; }else if (now < x[i]){ now = x[i]; } } return 1;}int main(void){ int n; scanf("%d", &n); db l = 0, r = 0.0; rep(i, 1, n){ scanf("%d%d%d", &x[i], &y[i], &t[i]); r += t[i]; } db mid; while (r - l >= eps){ mid = (l + r) / 2.0; if (check(mid, n)){ r = mid; }else{ l = mid; } } printf("%.2f\n", mid); return 0;}
1 0
- 包裹快递 jzoj1396 二分
- Vijos 包裹快递(二分)
- Vijos1450[包裹快递] 二分答案
- 二分查找(vijos1450包裹快递)
- 【洛谷 1542】 包裹快递
- 洛谷 1542 快递包裹
- 洛谷p1542包裹快递
- 包裹侠-快递单号查询App
- 亚马逊获无人机快递包裹新专利
- 首单美国官方批准无人机快递成功送达 包裹里全是食物
- JZOJsenior1396.2017.04.08【NOIP提高组】模拟赛B组 T2包裹快递
- 快递
- 快递
- 快递
- 包裹函数
- 包裹函数
- [jzoj]2248. 【2017.12.02普及组模拟】送快递(二分+set)
- python学习之--包裹传递和解包裹
- editplus,notepad++,ultraEdit使用技巧(附实用快捷键)(多年总结,待完善)
- 23种设计模式的总结~以及区别、应用
- Java 中方法的重写,重载与覆盖的关系
- CAFFE 学习-1:基本的CAFFE结构
- azkaban 创建工作流
- 包裹快递 jzoj1396 二分
- empty()函数深度讲解
- ROS学习(基于Ubuntu 15.04 和ROS Jade)第一章 安装ROS到Ubuntu主机
- Gson 布尔值bool与整形int相互转化
- 机器学习评价指标大汇总
- [JNI] 开发实例(2) 编译libwebsocket,封装jni函数,搭建IM通信基础服务
- score_sort
- HDU2896 AC自动机
- 【java基础知识】字符串的比较