Skip to content

E3560.木材运输的最小成本

implementation, https://leetcode.cn/problems/find-minimum-log-transportation-cost/description/

给你三个整数 nmk

有两根长度分别为 nm 单位的木材,需要通过三辆卡车运输。每辆卡车最多只能装载一根长度 不超过 k 单位的木材。

你可以将木材切成更小的段,其中将长度为 x 的木材切割成长度为 len1len2 的段的成本为 cost = len1 * len2,并且满足 len1 + len2 = x

返回将木材分配到卡车上的 最小总成本 。如果木材不需要切割,总成本为 0。

示例 1:

输入: n = 6, m = 5, k = 5

输出: 5

解释:

将长度为 6 的木材切割成长度为 1 和 5 的两段,成本为 1 * 5 == 5。现在三段长度分别为 1、5 和 5 的木材可以分别装载到每辆卡车。

示例 2:

输入: n = 4, m = 4, k = 6

输出: 0

解释:

两根木材已经可以直接装载到卡车上,因此不需要切割。

提示:

  • 2 <= k <= 10^5
  • 1 <= n, m <= 2 * k
  • 输入数据保证木材总存在能被运输的方案。
python
class Solution:
    def minCuttingCost(self, n: int, m: int, k: int) -> int:
        if m <=k and n<=k:
            return 0
        if m <= k and n > k:
            return (n-k) * k
        if n <=k and m > k:
            return (m-k) * k

        return (m-k) * k + (n-k) * k

if __name__ == "__main__":
    sol = Solution()
    print(sol.minCuttingCost(6, 5, 5))
    print(sol.minCuttingCost(4, 4, 6))