链接: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. uniapp添加顶部导航栏颜色渐变
  2. python实现http下载文件-Python实现http文件下载
  3. oa办公自动化系统(ssh mysql)_OA办公自动化系统(SSH+MySQL)
  4. /UI2/USHELL folder and BSP application
  5. 操作系统的运行机制和体系机构
  6. NOIP模拟测试25「字符串·乌鸦喝水·所陀门王的宝藏(陀螺王)」
  7. 返回表达式列表中最小值least(exp1,exp2,exp3,……,expn)
  8. 【Kafka】Kafka 如果 动态 不停止的情况下 修改 消费组 offset
  9. java e.getmessage() null,浅谈Java异常的Exception e中的egetMessage()和toString()方法的区别...
  10. 2007年7月23日旅游
  11. PB的特点及Powerscript的语言基础
  12. python,用pycharm写的评分系统
  13. 服务器响应到客户端中文乱码的解决方式
  14. VGA、HDMI、DP你都懂吗?显示接口大盘点
  15. 复辟变后寄友人——李大钊
  16. python计算题库_python练习题-
  17. 自学本科计算机课程要多久,22岁完全0基础自考计算机本科是否现实?
  18. 力扣 731. 我的日程安排表 II
  19. java中appletviewer是什么意思_自动生成供AppletViewer运行Java Applet的HTML文件
  20. emgucv自适应二值化

热门文章

  1. eclipse常见问题
  2. Object转成map对象
  3. NX安装cuda和cudnn
  4. UBT10:ubuntu安装tomcat
  5. 如何快速修复谷歌浏览器扩展插件频繁损坏问题
  6. (知乎)你是如何变的自律的
  7. 前端禁用中文半角输入法
  8. 计算机图形学 英语,计算机图形学专业术语中英文对照
  9. CSDN 2008英雄大会之“望穿秋水”
  10. esp8266模拟车模航模接收机控制电调驱动电机