当前位置: 首页 > news >正文

潍坊昌大建设集团网站嵌入式软件工程师培训

潍坊昌大建设集团网站,嵌入式软件工程师培训,做神马网站优化排名,百度对网站建设公司这道题是一个典型的算法题,涉及计算在限制的时间内列车速度的最小值。这是一个优化问题,通常需要使用二分查找来求解。 题目描述(中等) 准时到达的列车最小时速 给你一个浮点数 hour ,表示你到达办公室可用的总通勤时…

这道题是一个典型的算法题,涉及计算在限制的时间内列车速度的最小值。这是一个优化问题,通常需要使用二分查找来求解。

题目描述(中等)

准时到达的列车最小时速
给你一个浮点数 hour ,表示你到达办公室可用的总通勤时间。要到达办公室,你必须按给定次序乘坐 n 趟列车。另给你一个长度为 n 的整数数组 dist ,其中 dist[i] 表示第 i 趟列车的行驶距离(单位是千米)。

每趟列车均只能在整点发车,所以你可能需要在两趟列车之间等待一段时间。

例如,第 1 趟列车需要 1.5 小时,那你必须再等待 0.5 小时,搭乘在第 2 小时发车的第 2 趟列车。
返回能满足你准时到达办公室所要求全部列车的 最小正整数 时速(单位:千米每小时),如果无法准时到达,则返回 -1 。

生成的测试用例保证答案不超过 107 ,且 hour 的 小数点后最多存在两位数字 。
在这里插入图片描述


题目大意:

  • 你需要乘坐 n 趟列车,并且需要按给定的顺序乘坐。
  • 每趟列车都要在整点发车,所以可能需要在两趟列车之间等待。
  • 你可以给定一个浮点数 hour,作为你所能使用的最大通勤时间。
  • 需要找到一个最小的正整数速度,使得总用时不超过给定的 hour,无法达到则返回 -1。

解题思路:

  1. 理解等待时间:由于列车只能整点发车,即使乘车时间不满整数小时,也需要等到下一个整数小时。
  2. 计算用时
    • 对于前 n-1 趟列车,必须在整点发车。其总时间为这些列车每趟到达所需时间的上限。
    • 最后一趟列车则直接计算实际用时,因为它不需要等下一个整点发车。
  3. 二分查找
    • 初始最小速度设为1,最大速度设定为题目保证的上限(或使用一个足够大的值)。
    • 使用二分查找来找到使得总乘机时间不超过 hour 的最小整数速度。
    • 对于每个速度,通过计算每趟列车旅游所消耗的时间来判断该速度是否符合条件。

C和C++代码实现:

C++代码


bool canReachOnTime(const vector<int>& dist, double hour, int speed) {double totalTime = 0.0;int n = dist.size();for (int i = 0; i < n; ++i) {double timeNeeded = static_cast<double>(dist[i]) / speed;if (i == n - 1) {totalTime += timeNeeded; // Last train, no need to round up} else {totalTime += ceil(timeNeeded); // Round up for all but the last train}}return totalTime <= hour;
}int minSpeedOnTime(const vector<int>& dist, double hour) {int left = 1, right = 1e7, minSpeed = -1;while (left <= right) {int mid = left + (right - left) / 2;if (canReachOnTime(dist, hour, mid)) {minSpeed = mid;right = mid - 1;} else {left = mid + 1;}}return minSpeed;
}

C代码

由于C语言的math.h库并没有很好的支持浮点的ceil函数,你可能需要手动编写这个功能。

#include <stdio.h>
#include <math.h>int canReachOnTime(int* dist, int distSize, double hour, int speed) {double totalTime = 0.0;for (int i = 0; i < distSize; ++i) {double timeNeeded = (double)dist[i] / speed;if (i == distSize - 1) {totalTime += timeNeeded; // Last train, no need to round up} else {totalTime += ceil(timeNeeded); // Round up for all but the last train}}return totalTime <= hour;
}int minSpeedOnTime(int* dist, int distSize, double hour) {int left = 1, right = 10000000, minSpeed = -1;while (left <= right) {int mid = left + (right - left) / 2;if (canReachOnTime(dist, distSize, hour, mid)) {minSpeed = mid;right = mid - 1;} else {left = mid + 1;}}return minSpeed;
}int main() {int dist[] = {1, 3, 2};int n = sizeof(dist) / sizeof(dist[0]);double hour = 2.7;printf("Minimum speed required: %d\n", minSpeedOnTime(dist, n, hour));return 0;
}

算法和代码分析:

  • canReachOnTime函数:这个辅助函数判断给定的速度下能否在限制时间内到达。它遍历所有列车计算总用时。对倒数第二趟列车,使用ceil将乘车时间圆整至下一整数以模拟等待时间的影响。
  • 二分查找:利用二分查找来优化最小的速度搜索,将搜索空间从1到10000000,每次通过中值检验是否满足时间条件,不符合则增加速度范围,符合则记录并尝试更小速度。
  • 复杂度:二分查找的复杂度为O(log M),其中M为速度的搜索范围,判断能否到达的复杂度为O(N),因此总复杂度为O(N log M)。
http://www.yayakq.cn/news/336435/

相关文章:

  • 咸阳做网站的公司有哪些西安优化外
  • 网站建设和前端开发的区别网站的一般制作流程
  • 凡科建站可以多人协作编辑吗书签制作步骤
  • 百度推广建设网站是干什么了wordpress边栏调用
  • 微软做网站wordpress控制菜单是否显示
  • 福建百益建设集团有限公司网站淮安网站设计
  • 烟台网站建设方案咨询html登录注册页面模板
  • 如何建立网站快捷方式wordpress 伪静态规则
  • 哪些网站可以接工程做有创意的30个网站
  • 网站关键词指数查询工具网站开发的专业能力
  • .概述网站建设的基本流程扁平化网站模板下载
  • 网站前后端全部做需要多少钱做外贸怎么做
  • 网站左侧导航源码php和wordpress
  • 河南省建设安全监督总站网站seo优化咨询
  • 网站给篡改了要怎么做html5 服装网站
  • 个人如何制作网站源码wordpress评论折叠
  • asp.net网站sql权限设置网页游戏大全双人
  • 公司网站建设华为学生做网站作品图片
  • 广州新闻发布搜索优化seo
  • 网站建设模板一次收费网站建设丿金手指稳定
  • 虚拟主机和网站的关系公司个人怎么制作网站
  • 深圳网站建设推荐q479185700顶上永城网站设计公司
  • 购买域名的网站wordpress5本地访问速度慢
  • 我是做网站怎么赚钱吗seo具体是什么
  • 网站制作教程及流程免费的短视频app大全下载
  • 织梦网站建设过程鄂州第一网官方网站
  • 品牌设计网站怎么做大学网站建设定制网站建设
  • 长沙医院网站建设平台公司转型
  • 高性能标准网站建设进阶指南 pdf可以做超大海报的网站
  • vuejs做视频网站设计网站模板二次开发