石子合并2——环状合并DP

这是一个关于环形跑道上石子合并的动态规划问题,要求计算合并石子的最小总代价。题目描述中提到,每次合并相邻两堆石子,最终合并成一堆,并给出了一种双倍数组的解决策略来实现环状效果。通过递归分解,当k=i或j-k可以直接合并时,问题得到解决。示例输入和输出展示了具体操作和计算结果。
摘要由CSDN通过智能技术生成

题目

描述
在一个环形跑道上有N堆石子,每次取相邻两堆进行合并
最终合并成为一堆。请问将每次合并后的代价进行累加
其总和最少为多少

输入
第一行为石子堆数N,N<=200
第二行到第N行,每行一个正整数代表石子数,其小于10000

输出
一行,表示最小的总得分

样例
输入
4
4
5
9
4
输出
43

此题是典型的合并类DP,板子题,它和石子合并1所不同的是这次的跑道是环状的,也就是首尾相连,最后一个可以和最开始一个合并了。

所以我们可以将数组开成双倍的,从而达到环的效果。

借此机会复习一下合并DP的基本思路

在这里插入图片描述
可以转化为:
在这里插入图片描述
像这样,继续分下去,就会到k=i或j-k可以直接合并的情况了。

参考代码一篇:

#include <bits/stdc++.h>
using namespace std;

int n, a[405], sum[405];
int dp[405][405], ans = 
  • 1
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值