acgo题库
  • 首页
  • 题库
  • 题单
  • 竞赛
  • 讨论
  • 排行
  • 团队
  • 备赛专区

    竞赛

    • CSP-J/S
    • 蓝桥杯

    考级

    • GESP
    • CPA
    • 电子学会考级
登录
注册
题目详情题解(0)讨论(0)提交记录(0)
  • 6

    还有大佬吗?

    userId_undefined

    陌离﹠

    秩序白银
    53阅读
    11回复
    4点赞
  • 解题思路

    我们想找到将数组分割成段的最小成本,使得段长度的平方和最小。 我们可以使用单调队列来跟踪最优的段长度。 我们遍历数组,对于每个元素,找到之前队列中的最优段长度。 我们更新动态规划表 d,其中包含将数组分割成段的最小成本,直到当前元素。 我们使用公式 d[i] = d[j] + (s[i] - s[j])^2 计算最小成本,其中 j 是队列中的前一个元素。 公式: 公式 d[i] = d[j] + (s[i] - s[j])^2 可以从以下推导: 让 d[i] 是将数组分割成段的最小成本,直到 i-th 元素。 让 j 是队列中的前一个元素,使得 s[j] + cnt[j] <= s[i]。 让 cnt[i] 是以 i-th 元素结束的段的长度。 那么,将数组分割成段的成本是最小的: 将数组分割成段的成本,直到 j-th 元素 (d[j]) 添加一个新的段从 j+1 到 i 的成本 ((s[i] - s[j])^2) 因此,d[i] = d[j] + (s[i] - s[j])^2。 伪代码

    userId_undefined

    我是垃圾

    荣耀黄金
    29阅读
    1回复
    3点赞
首页