N堆石子摆成一条线。现要将石子有次序地合并成一堆。规定每次只能选相邻的2堆石子合并成新的一堆,并将新的一堆石子数记为该次合并的代价。计算将N堆石子合并成一堆的最小代价。

例如: 1 2 3 4,有不少合并方法

1 2 3 4 => 3 3 4(3) => 6 4(9) => 10(19)

1 2 3 4 => 1 5 4(5) => 1 9(14) => 10(24)

1 2 3 4 => 1 2 7(7) => 3 7(10) => 10(20)

括号里面为总代价可以看出,第一种方法的代价最低,现在给出n堆石子的数量,计算最小合并代价。

AC代码:

#include <iostream>
#include <cstdio>
#include <cstring>
#include <algorithm>
//#define int long long
using namespace std;
const int maxn=1e6+5;
int dp[1005][1005],sum[maxn],a[maxn];
int main(){memset(dp,0x3f3f3f3f,sizeof(dp));int n;cin>>n;for(int i=1;i<=n;i++){cin>>a[i];sum[i]=sum[i-1]+a[i];dp[i][i]=0;}for(int len=2;len<=n;len++){for(int i=1;i+len-1<=n;i++){int l=i,r=i+len-1;for(int k=l;k<=r;k++){dp[l][r]=min(dp[l][k]+dp[k+1][r]+sum[r]-sum[l-1],dp[l][r]);}}}cout<<dp[1][n]<<endl;
}

石子归并 51Nod - 1021(区间DP入门题)相关推荐

  1. 石子归并 51Nod - 1021

    N堆石子摆成一条线.现要将石子有次序地合并成一堆.规定每次只能选相邻的2堆石子合并成新的一堆,并将新的一堆石子数记为该次合并的代价.计算将N堆石子合并成一堆的最小代价. 例如: 1 2 3 4,有不少 ...

  2. 区间dp入门——总结+习题+解析

    前天学长拉了个区间dp的专题,花了两个做,今天就来做个总结吧!!! 区间dp其实就是一种建立在线性结构上的对区间的动态规划,dp本来就是很奇妙的东西,也没有什么套路,就是一种思考的数学思维方式,只有做 ...

  3. 数位dp入门题 洛谷P2657 [SCOI2009] windy 数

    题干 传送门 windy 定义了一种 windy 数. 题目描述 不含前导零且相邻两个数字之差至少为 2的正整数被称为 windy 数.windy 想知道,在 a 和 b 之间,包括 a 和 b ,总 ...

  4. AcWing 1068. 环形石子合并(环形区间DP)

    AcWing 1068. 环形石子合并(环形区间DP) 一.问题 二.思路 三.代码 一.问题 二.思路 在讲解这道题之前,我们需要先掌握线性的区间DP问题,如果对于线性区间DP的解决方式还不了解的话 ...

  5. 洛谷P3146 区间dp做题笔记

    不是题解,不是题解,不是题解,纯属个人笔记,不知所言. 传送门:P3146 问:什么时候才能写的一手漂亮的dp? 答:夜深人静之时,魂归故里之日. 此题是一道基础的区间dp的题,看完题解犹豫片刻,之后 ...

  6. 合并石子 区间dp水题

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

  7. 51Nod - 1522 区间dp

    题意: 题目链接:https://www.51nod.com/onlineJudge/questionCode.html#!problemId=1522 思路: 很好的区间dp. 从1开始填起,两个1 ...

  8. LightOJ 1422:Halloween Costumes(区间DP入门)

    http://lightoj.com/volume_showproblem.php?problem=1422 题意:去参加派对,有n场派对,每场派对要穿第wi种衣服,可以选择外面套一件,也可以选择脱掉 ...

  9. hdu_Anniversary party_(树形DP入门题)

    题目连接:http://acm.hdu.edu.cn/showproblem.php?pid=1520 题意:有N个人,N-1个人有自己的上司,每个人有一个快乐值,如果这个人参加了聚会,那么这个人的直 ...

最新文章

  1. python怎么开发安卓程序_怎样用python开发安卓app-到底如何使用Python开发Android程序.txt...
  2. java投票输出票数最高前三名,给你喜欢的作品投票,票数前三名获本平台赠送书一本。|诗花朵朵...
  3. 前端学习(3310):redux的state hook对象
  4. 图像处理之图像特征匹配
  5. Unix——optarg与getopt的用法
  6. SpringBoot2.1.5(18)--- 国际化配置,SpringBoot Locale 国际化使用方法
  7. 学python之前要学c语言吗_学Python之前需要学c语言吗
  8. ggthemes包:丰富ggplot2的表现力
  9. 小米9008授权账号_小米AI音箱APP的秘密
  10. 微信怎么测试好友软件,三种方法教你检测微信中的僵尸粉!不要再用第三方软件了哦...
  11. 中关村 - DIY之如何唯美地阅读电子书
  12. PPP和PDP激活是什么区别
  13. 简述eureka的自我保护模式? 如何配置其自我保护模式
  14. SQL语句,关于随机分组后在随机排序
  15. oracle中drop和delete,oracle中delete drop truncate的用法和区别
  16. Vultr Debian8系统一键快速DD安装Windows7系统
  17. 搭建SpringCloud配置中心 Config Server
  18. 辞职的时候,如果老板挽留你,你会怎么办呢?
  19. android四大组件之四-BroadCast实现原理分析
  20. PHP 上传并压缩图片

热门文章

  1. 旅游景点微信小程序开发方案
  2. [技术] 使用Shader Graph着色器视图制作交互式顶点特效
  3. opencv学习四:色彩空间转换
  4. linux12企业实战 -- 07ssh免密
  5. Random Forest(随机森林)在软件缺陷预测领域的应用及其特点
  6. Java爬取京东商品数据
  7. 共享自习室,共享茶室共享麻将馆
  8. 如何在互联网开展网络品牌推广
  9. 使用Unity3D 自主实战开发的赛车游戏实例
  10. java计算机毕业设计旅游网站设计源代码+数据库+系统+lw文档