首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

2023-07-22:一共有n个项目,每个项目都有两个信息, projects[i] = {a, b}, 表示i号项目做完要a天

2023-07-22:一共有n个项目,每个项目都有两个信息,

projects[i] = ,

表示i号项目做完要a天,但是当你投入b个资源,它就会缩短1天的时间,

你一共有k个资源,你的目标是完成所有的项目,但是希望总天数尽可能缩短。

在所有项目同时开工的情况下,返回尽可能少的天数。

1

1

答案2023-07-22:

以下是代码的大致过程和功能描述:

1.导入所需的包: 用于打印输出, 用于数学运算。

2.定义函数 ,该函数接受项目详情和可用资源数量作为输入参数。

3.初始化变量  和 ,用于跟踪搜索范围的左右边界。

4.遍历项目列表,并更新  的值为当前  和项目完成时间 () 中的最大值。

5.将变量  和  初始化为 ,作为找到的目标最少天数的初始猜测。

6.使用二分搜索算法找到最小天数。重复以下步骤,直到  小于等于 :

• 计算中间值 ,即  和  的平均值。

• 如果在  天或更少的时间内完成所有项目所需的总资源量 () 小于等于可用资源量 ,则更新  为 ,并将右边界  调整为 。

• 否则,将左边界  调整为 。

7.返回  的最终值,表示完成所有项目所需的最少天数。

8.定义  函数,该函数接受项目详情和天数作为输入参数。

9.初始化变量 ,用于跟踪所有需要的资源总量。

10.遍历项目列表,并计算超过给定天数的每个项目所需的资源量。

11.将每个项目所需的资源量添加到 。

12.返回  的最终值,表示超过给定天数的所有项目所需的资源总量。

13.在  函数中,创建一个示例项目数据集 ,其中包含项目的详细信息。

14.将可用资源  设置为特定值。

15.打印调用  函数并传入项目数据集和可用资源作为参数的结果。

总的时间复杂度:

•  函数中的二分搜索算法的时间复杂度为 O(log(r)),其中 r 是最大项目完成时间。

•  函数中的遍历项目列表的时间复杂度为 O(n),其中 n 是项目的数量。

因此,总的时间复杂度为 O(log(r) + n)。

总的空间复杂度:

• 空间复杂度主要来自于变量的存储和函数调用的堆栈空间。

• 不考虑输入数据的空间占用,变量和数据结构的空间复杂度是常数级的,不随输入规模的增长而变化。

• 函数调用的堆栈空间复杂度是 O(log(r) + n),其中 r 是最大项目完成时间,n 是项目的数量。

因此,总的空间复杂度可以近似为 O(log(r) + n)。

go完整代码如下:

在这里插入图片描述rust完整代码如下:

在这里插入图片描述c++完整代码如下:

在这里插入图片描述c完整代码如下:

在这里插入图片描述

  • 发表于:
  • 原文链接https://page.om.qq.com/page/OEERHVw58sqrjsIkSCOZl8nw0
  • 腾讯「腾讯云开发者社区」是腾讯内容开放平台帐号(企鹅号)传播渠道之一,根据《腾讯内容开放平台服务协议》转载发布内容。
  • 如有侵权,请联系 cloudcommunity@tencent.com 删除。

相关快讯

扫码

添加站长 进交流群

领取专属 10元无门槛券

私享最新 技术干货

扫码加入开发者社群
领券