网易首页 > 网易号 > 正文 申请入驻

2026-05-06:采购的最小花费。用go语言,你有 5 个整数:cost1、cost2、costBoth、need1、need2。 现在你可以购买三...

0
分享至

2026-05-06:采购的最小花费。用go语言,你有 5 个整数:cost1、cost2、costBoth、need1、need2。

现在你可以购买三种物品来凑需求:

  1. 1. 物品A:价格是 cost1,只能用于满足“需求1”,每买一个提供 1 单位需求1。

  2. 2. 物品B:价格是 cost2,只能用于满足“需求2”,每买一个提供 1 单位需求2。

  3. 3. 物品C:价格是 costBoth,同时满足两种需求:每买一个会让需求1减少 1 且需求2减少 1(等
    价于同时提供 1 单位需求1和 1 单位需求2)。

你的目标是:

  • • 让总的需求1满足数量至少达到 need1

  • • 让总的需求2满足数量至少达到 need2

在满足这两条的前提下,计算总花费的最小值。

1 <= cost1, cost2, costBoth <= 1000000。

0 <= need1, need2 <= 1000000000。

输入: cost1 = 5, cost2 = 4, costBoth = 15, need1 = 2, need2 = 3。

输出: 22。

解释:

购买 need1 = 2 个类型 1 的物品和 need2 = 3 个类型 2 的物品,总花费为 2 * 5 + 3 * 4 = 10 + 12 = 22。

任何其他有效的购买方案都会花费更多,因此最小总花费为 22。

题目来自力扣3789。

一、整体思路

要同时满足需求1=need1、需求2=need2,有三种购买方案:

  • • 只买A、B,不买C;

  • • 全买C,不买A、B;

  • • 买一部分C,剩下不足的用A或B补。
    在这三种方案里选花费最小的即可。

二、分步详细过程 1. 输入参数
  • • cost1:A的单价(只供需求1)

  • • cost2:B的单价(只供需求2)

  • • costBoth:C的单价(同时供1和2各1)

  • • need1:需求1至少要满足的数量

  • • need2:需求2至少要满足的数量

2. 方案一:各买各的(A+B)
  • • 买 need1 个 A:花费 = cost1 × need1

  • • 买 need2 个 B:花费 = cost2 × need2

  • • 总花费 res1 = cost1×need1 + cost2×need2

  • • 特点:一定合法,但不一定最便宜。

3. 归一化处理(让 need1 ≤ need2)
  • • 如果 need1 > need2:

    • • 交换 need1、need2

    • • 交换 cost1、cost2(相当于把“需求小的”统一放到前面,逻辑不变)

  • • 目的:简化后续“买C”的计算,只需要考虑need1 ≤ need2的情况。

  • • 示例(原题):need1=2、need2=3,无需交换。

4. 方案二:全买C(全包)
  • • C一次解决1和2各1,最多只能买need2 个(因为 need2 更大)

  • • 买 need2 个 C:花费 res2 = costBoth × need2

  • • 特点:满足需求1=need2(≥原need1)、需求2=need2,合法;但C可能很贵。

5. 方案三:混合策略(C + 便宜的单品)
  • • 先买need1 个 C:解决全部需求1、同时解决 need1 个需求2

  • • 需求2还剩:need2 − need1 个

  • • 剩下的需求2用单价更低的那个单品补(此时 cost2 已经是归一化后对应大需求的单价)

  • • 总花费 res3 = costBoth×need1 + cost2×(need2−need1)

  • • 特点:合法,通常在C适中时最优。

6. 取最小值并返回
  • • 在 res1、res2、res3 中选最小的

  • • 转成 int64(防止大数溢出)返回

  • • 原题示例:

    • • res1 = 5×2 + 4×3 = 22

    • • res2 = 15×3 = 45

    • • res3 = 15×2 + 4×1 = 34

    • • 最小为 22,输出 22

三、时间复杂度与空间复杂度
  • 时间复杂度:O(1)

    • • 只有几次算术运算、比较、交换,与输入大小无关

  • 额外空间复杂度:O(1)

    • • 只用到有限几个变量(res1/res2/res3、临时交换变量),不随输入增长

四、关键点总结
  1. 1. 只需要比较三种固定方案,无需循环/枚举;

  2. 2. 归一化(need1 ≤ need2)是简化逻辑的核心;

  3. 3. 所有运算都是常数级,能处理 1e9 级的超大需求

  4. 4. 本质是贪心:在“全单品、全套餐、套餐+补单品”里选最优。

要不要我再给你几组测试用例,帮你验证这个逻辑在不同价格和需求下是否正确?

Go完整代码如下:

package main

import (
"fmt"
)

func minimumCost(cost1, cost2, costBoth, need1, need2 int)int64 {
res1 := cost1*need1 + cost2*need2 // 各买各的
if need1 > need2 {
need1, need2 = need2, need1
cost2 = cost1
}
res2 := costBoth * need2 // 我包了
res3 := costBoth*need1 + cost2*(need2-need1) // 混合策略
returnint64(min(res1, res2, res3))
}

func main() {
cost1 := 5
cost2 := 4
costBoth := 15
need1 := 2
need2 := 3
result := minimumCost(cost1, cost2, costBoth, need1, need2)
fmt.Println(result)
}

Python完整代码如下:

# -*-coding:utf-8-*-

def minimum_cost(cost1: int, cost2: int, cost_both: int, need1: int, need2: int) -> int:
# 各买各的
res1 = cost1 * need1 + cost2 * need2
# 确保 need1 <= need2 以便混合策略计算
if need1 > need2:
need1, need2 = need2, need1
cost2 = cost1 # 注意:交换后 cost2 需要同步更新
# 全买双人票
res2 = cost_both * need2
# 混合策略:部分买双人票,部分买单人票
res3 = cost_both * need1 + cost2 * (need2 - need1)
return min(res1, res2, res3)

def main():
cost1 = 5
cost2 = 4
cost_both = 15
need1 = 2
need2 = 3
result = minimum_cost(cost1, cost2, cost_both, need1, need2)
print(result)

if __name__ == "__main__":
main()

C++完整代码如下:

  


using namespace std;

long long minimumCost(int cost1, int cost2, int costBoth, int need1, int need2) {
// 各买各的
long long res1 = 1LL * cost1 * need1 + 1LL * cost2 * need2;

// 确保 need1 <= need2 以便混合策略计算
if (need1 > need2) {
swap(need1, need2);
cost2 = cost1;
}

// 全买双人票
long long res2 = 1LL * costBoth * need2;

// 混合策略:部分买双人票,部分买单人票
long long res3 = 1LL * costBoth * need1 + 1LL * cost2 * (need2 - need1);

return min({res1, res2, res3});
}

int main() {
int cost1 = 5;
int cost2 = 4;
int costBoth = 15;
int need1 = 2;
int need2 = 3;

long long result = minimumCost(cost1, cost2, costBoth, need1, need2);
cout << result << endl;

return0;
}

我们相信人工智能为普通人提供了一种“增强工具”,并致力于分享全方位的AI知识。在这里,您可以找到最新的AI科普文章、工具评测、提升效率的秘籍以及行业洞察。 欢迎关注“福大大架构师每日一题”,发消息可获得面试资料,让AI助力您的未来发展。

特别声明:以上内容(如有图片或视频亦包括在内)为自媒体平台“网易号”用户上传并发布,本平台仅提供信息存储服务。

Notice: The content above (including the pictures and videos if any) is uploaded and posted by a user of NetEase Hao, which is a social media platform and only provides information storage services.

相关推荐
热点推荐
关注 | 2名学生溺亡!游乐场脚踏船侧翻!调查报告公布!

关注 | 2名学生溺亡!游乐场脚踏船侧翻!调查报告公布!

天津广播
2026-05-08 21:45:25
明目张胆造假,中国电影还有救吗?

明目张胆造假,中国电影还有救吗?

闲人电影
2026-05-08 18:31:17
47岁高圆圆在公园被抓拍,麒麟臂、凉拖鞋,活脱脱一个买菜大姐

47岁高圆圆在公园被抓拍,麒麟臂、凉拖鞋,活脱脱一个买菜大姐

嘴角上翘的弧度
2026-05-06 19:51:52
两任国防部长判死缓,今天不得不提这个人了。

两任国防部长判死缓,今天不得不提这个人了。

华人星光
2026-05-08 11:04:21
郭德纲、于谦相声再被举报!

郭德纲、于谦相声再被举报!

天津人
2026-05-08 15:12:33
穆里尼奥二进宫皇马,弗洛伦蒂诺计划以最小的动荡来完成重建

穆里尼奥二进宫皇马,弗洛伦蒂诺计划以最小的动荡来完成重建

K唐伯虎
2026-05-09 07:27:02
萨摩亚女足球员被控性侵14岁美国男孩,“多达每周三次”

萨摩亚女足球员被控性侵14岁美国男孩,“多达每周三次”

观察者网
2026-05-08 08:39:09
浙江宣传评世界杯转播权之争:与其花费巨资追捧海外赛事,不如投入本土足球

浙江宣传评世界杯转播权之争:与其花费巨资追捧海外赛事,不如投入本土足球

澎湃新闻
2026-05-08 12:24:10
伯克希尔等着捡尸体

伯克希尔等着捡尸体

贩财局
2026-05-08 14:52:06
夺冠仅2天,吴宜泽私生活被扒,恶心一幕发生 丁俊晖的话早有预兆

夺冠仅2天,吴宜泽私生活被扒,恶心一幕发生 丁俊晖的话早有预兆

揽星河的笔记
2026-05-08 23:23:45
江苏省体育局发布退役运动员安置情况:钱天一、何冰娇均自主择业

江苏省体育局发布退役运动员安置情况:钱天一、何冰娇均自主择业

懂球帝
2026-05-08 09:54:18
访华仅剩8天,美国抛出1890亿美元,中方底牌亮了

访华仅剩8天,美国抛出1890亿美元,中方底牌亮了

爱看剧的阿峰
2026-05-08 17:01:38
他活埋近5000红军,逃往国外安享晚年,如今国内竟还有人纪念他!

他活埋近5000红军,逃往国外安享晚年,如今国内竟还有人纪念他!

兴趣知识
2026-05-08 00:23:54
明明有133套汤臣一品的房子,却过得想自杀,一个月才花一万块钱

明明有133套汤臣一品的房子,却过得想自杀,一个月才花一万块钱

人生录
2026-05-08 19:07:58
凯特琳-克拉克:去年受伤时,詹姆斯主动联系我询问是否需要帮助

凯特琳-克拉克:去年受伤时,詹姆斯主动联系我询问是否需要帮助

懂球帝
2026-05-09 07:30:10
曝王暖暖凌晨被送往医院抢救!全身浮肿、满脸胀红,昏迷原因曝光

曝王暖暖凌晨被送往医院抢救!全身浮肿、满脸胀红,昏迷原因曝光

阿废冷眼观察所
2026-05-08 18:26:49
0票反对!7800亿台军购过关,近7成台受访民众拒绝为“台独”而战

0票反对!7800亿台军购过关,近7成台受访民众拒绝为“台独”而战

共工之锚
2026-05-09 00:11:09
全网吵炸!北京女大学生青海自驾游,幸存女孩一审被判4年,冤吗

全网吵炸!北京女大学生青海自驾游,幸存女孩一审被判4年,冤吗

一盅情怀
2026-05-08 09:07:58
富士山上挥舞国旗,被美军嘲笑?

富士山上挥舞国旗,被美军嘲笑?

十柱
2026-05-08 17:04:52
日本航空拿下宇树科技,轰动全球!

日本航空拿下宇树科技,轰动全球!

新零售参考Pro
2026-05-07 17:31:09
2026-05-09 08:23:00
moonfdd incentive-icons
moonfdd
福大大架构师每日一题
1217文章数 67关注度
往期回顾 全部

科技要闻

Meta疯狂拥抱人工智能:员工苦不堪言

头条要闻

美公布首批UFO文件 视频公开:阿联酋现水母状物体

头条要闻

美公布首批UFO文件 视频公开:阿联酋现水母状物体

体育要闻

他把首胜让给队友,然后用一年时间还清账单

娱乐要闻

古天乐被曝隐婚生子,新娘竟是她

财经要闻

估值3000亿 DeepSeek寻求500亿元融资

汽车要闻

MG 4X实车亮相 将于5月11日开启盲订

态度原创

手机
游戏
房产
健康
教育

手机要闻

OPPO K15系列手机规格曝光:6.78英寸直屏、8000mAh电池

《GTA6》首发无PC遭玩家批评:主机是付费测试版

房产要闻

豪掷6.8亿拿地!何猷君大手笔投资三亚!

干细胞能让人“返老还童”吗

教育要闻

太乖的孩子在AI时代没有出头之日

无障碍浏览 进入关怀版