链接:https://www.nowcoder.com/questionTerminal/6d3ccbc5b6ad4f12b8fe4c97eaf969e0
来源:牛客网

有 N 堆金币排成一排,第 i 堆中有 C[i] 块金币。每次合并都会将相邻的两堆金币合并为一堆,成本为这两堆金币块数之和。经过N-1次合并,最终将所有金币合并为一堆。请找出将金币合并为一堆的最低成本。

其中,1 <= N <= 30,1 <= C[i] <= 100

输入描述:

第一行输入一个数字 N 表示有 N 堆金币

第二行输入 N 个数字表示每堆金币的数量 C[i]

输出描述:

输出一个数字 S 表示最小的合并成一堆的成本

示例1

输入

4
3 2 4 1

输出

20

示例2

输入

30
10 20 30 40 50 60 70 80 90 100 99 89 79 69 59 49 39 29 19 9 2 12 22 32 42 52 62 72 82 92

输出

7307

遇到相邻的,就要往区间dp上想

注意初始化。

代码:

#include<bits/stdc++.h>
using namespace std;
const int INF=0x3f3f3f3f;
int main()
{int n;int c[50],sum[50],dp[50][50];while(scanf("%d",&n)!=EOF){memset(dp,INF,sizeof(dp));memset(sum,0,sizeof(sum));for(int i=1;i<=n;i++){scanf("%d",&c[i]);sum[i]=sum[i-1]+c[i];dp[i][i]=0;}for(int len=1;len<=n;len++){///区间长度for(int i=1;i+len<=n;i++){///首int wei=i+len;for(int k=i;k<wei;k++)///中间。尾是“j+i-1”{dp[i][wei]=min(dp[i][wei],dp[i][k]+dp[k+1][wei]+sum[wei]-sum[i-1]);}}}printf("%d\n",dp[1][n]);}
}

区间dp——合并金币相关推荐

  1. CSP认证201612-4 压缩编码[C++题解]:区间dp、huffman树、石子合并

    题目分析 来源:acwing 分析: 本题难在想到是区间dp.想到区间dp之后,这就是石子合并的代码直接默写. 那么是如何建模的呢?我们把huffman编码(这里要求按照字典序大小编码,和huffma ...

  2. 合并石子 区间dp水题

    合并石子 链接: nyoj 737 描述: 有N堆石子排成一排,每堆石子有一定的数量.现要将N堆石子并成为一堆.合并的过程只能每次将相邻的两堆石子堆成一堆,每次合并花费的代价为这两堆石子的和,经过N- ...

  3. [蓝桥杯][算法提高VIP]合并石子(区间dp+平行四边形优化)

    题目描述 在一条直线上有n堆石子,每堆有一定的数量,每次可以将两堆相邻的石子合并,合并后放在两堆的中间位置,合并的费用为两堆石子的总数.求把所有石子合并成一堆的最小花费. 输入 输入第一行包含一个整数 ...

  4. LeetCode 1000. 合并石头的最低成本(区间DP)

    文章目录 1. 题目 2. 解题 1. 题目 有 N 堆石头排成一排,第 i 堆中有 stones[i] 块石头. 每次移动(move)需要将连续的 K 堆石头合并为一堆,而这个移动的成本为这 K 堆 ...

  5. 区间DP初探 P1880 [NOI1995]石子合并

    https://www.luogu.org/problemnew/show/P1880 区间dp,顾名思义,是以区间为阶段的一种线性dp的拓展 状态常定义为$f[i][j]$,表示区间[i,j]的某种 ...

  6. bzoj4565 [HAOI2016]字符合并 结论+状压+区间dp

    如果k==2的话就是记搜, 但这个题用记搜的思路的话是需要枚举k个断点的, 所以对于枚举断点,就很可能有优化,比如到一个断点,一个决策的最优值 于是考虑区间dp模型,相当于是插入一个数,然后看影响. ...

  7. AcWing.282石子合并(区间DP)题解

    石子合并 题目描述 设有N堆石子排成一排,其编号为1,2,3,-,N. 每堆石子有一定的质量,可以用一个整数来描述,现在要将这N堆石子合并成为一堆. 每次只能合并相邻的两堆,合并的代价为这两堆石子的质 ...

  8. 区间DP之环形石子合并

    环形石子合并 题目传送门 题目描述 将 n 堆石子绕圆形操场排放,现要将石子有序地合并成一堆. 规定每次只能选相邻的两堆合并成新的一堆,并将新的一堆的石子数记做该次合并的得分. 请编写一个程序,读入堆 ...

  9. 石子合并/能量项链【区间dp】

    题目链接:http://www.51mxd.cn/problem.php-pid=737.htm 题目大意:给出n个石子堆以及这n个石子堆中石子数目,每次操作合并两个相邻的石子堆,代价为两个石子堆数目 ...

最新文章

  1. 【Live555】live555源码详解(二):BasicHashTable、DelayQueue、HandlerSet
  2. 成功解决如何去掉输出字典,前边的dict_keys
  3. TabControl控件
  4. scrollHeight、clientHeight、offsetHeight、scrollTop等的定义以及图解
  5. jcache_窥探JCache API(JSR 107)
  6. linux命令之kill篇
  7. CDH集群异常处理ERROR  Failure due to stall on seeded torrent.、重装时hdfs提示目录已存在、CDH重启不正常
  8. ajax 批量上传图片插件,TinyMCE多图片批量上传(Ajax)教程
  9. 【错误纠正】关于文章《绕开数学,讲讲信息论》
  10. 不要小看它——编码与解码
  11. JDRefresh 轻简下拉刷新框架
  12. 34. Differentiate between inheritance of interface and inheritance ofimplementations
  13. js操作浏览器cookie详解
  14. 前端使用goeasy
  15. Inception模块 GooLeNet网络
  16. 关于torch.bmm()函数计算过程
  17. 2020年一套正版的solidworks多少钱
  18. 微信小程序自定义选中样式打小勾
  19. 数据泄露事件频发,数据安全迫在眉睫
  20. Linux中/dev/ram是什么?

热门文章

  1. 设计模式-day05
  2. webrtc】windows 构建 :depot_tools 采坑
  3. java核心技术卷代码下载
  4. 怎么会有两个“原本”
  5. 七、Android/Linux安全机制简单了解
  6. 苹果手机如何关闭自动续费_微信支付宝一键关闭自动续费
  7. 关于sockjs.js?9be2:1606 GET http://****/sockjs-node/info?t=1581148413474 net::ERR_CONNECTI 错误解决方案
  8. 对于Tencent Files文件夹需要来自LAPTOP-PH9TIHGE\用户名的权限才能删除的解决办法
  9. Android支持百分比布局
  10. 11.30黄金伦敦金还会跌吗?黄金原油独家交易指导及策略解套