算法实现题 3-5 石子合并问题(区间DP)
题目地址
题目描述
桌面上从左到右放着 n(1≤n≤200) 堆石子,其中第 i堆石子包含的石子数量为 ai
现在要将石子有序地合并成一堆。
规定每次只能取相邻的两堆石子合并成新的一堆,并将新的一堆的石子数,记为该次合并的花费。
那么,n−1 次合并后,石子将合并成一堆。
你需要寻找一种合并方案,使得花费总和最小。输出最小的花费总和。

输入格式:
输入的第一行包含一个整数 n(1≤n≤200),用于表示石子堆数。
输入的第二行包含 n 个整数,以空格间隔,分别表示初始时每一堆的石子数。

输出格式:
输出一个整数,用于表示将 n 堆石子合并成一堆的最小花费。

输入输出样例
输入

5
1 3 2 4 5

输出

34

算法分析:
对于动态规划问题首先找出它的状态转移方程:
对于最小得分:
dp[i][j]=min(dp[i][j],dp[i][k]+dp[k+1][j]+sum[j]-sum[i-1]) 条件:j!=i
对于最大得分:
dp[i][j]=max(dp[i][j],dp[i][k]+dp[k+1][j]+sum[j]-sum[i-1]) 条件:j!=i
对于i=j时 其实就相当于就一堆 dp[i][j]=0;
方程解释:
dp[i][j]: 合并第i堆石子到第j队石子所用的最大(小)得分或者说合并[i,j]这个区间范围内的石子最大/小花费总和
sum数组是前缀和,sum[i]表示一个数组从下标为0到下标为i之间所有的数据和
sum[i]=sum[i-1]+a[i]
想要更详细的请参考这位大哥

石子合并问题(no circle)相关推荐

  1. CSP 202203 题解:未初始化警告,出行计划,计算资源调度器,通信系统管理,博弈论与石子合并

    试题内容请前往CCF官网查看: CCF-CSP计算机软件能力认证考试 http://118.190.20.162/home.page CCF 官方题解请点击这里. 阅读本题解前,您应当了解下列知识: ...

  2. 【动态规划】小石子游戏-石子合并

    题目 一群小孩子在玩小石子游戏,游戏有两种玩法. (1)路边玩法 有n堆石子堆放在路边,现要将石子有序地合并成一堆,规定每次只能移动相邻的两堆石子合并,合并花费为新合成的一堆石子的数量.求将这N堆石子 ...

  3. 石子合并[DP-N3]

    题目描述 在一个园形操场的四周摆放N堆石子,现要将石子有次序地合并成一堆.规定每次只能选相邻的2堆合并成新的一堆,并将新的一堆的石子数,记为该次合并的得分. 试设计出1个算法,计算出将N堆石子合并成1 ...

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

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

  5. 算法基础课-动态规划-区间dp-AcWing 282. 石子合并:区间dp

    文章目录 题目分析 题目链接 题目分析 只能合并相邻两堆.求体力最小值 数据比较弱,最多300堆,每堆重量不超过1000. 状态表示 f[i][j]表示合并区间[i,j]需要的最小体力 状态转移 把区 ...

  6. 51nod 1022 石子合并v2

    就是石子合并的数据范围变为了1e3 经典四边形优化区间dp const int N = 2e3 + 10; const long long inf = 1e18; long long dp[N][N] ...

  7. NYOJ737 石子合并(一)区间动态规划

    石子合并(一) 时间限制:1000 ms  |  内存限制:65535 KB 难度:3 描述 有N堆石子排成一排,每堆石子有一定的数量.现要将N堆石子并成为一堆.合并的过程只能每次将相邻的两堆石子堆成 ...

  8. 【BZOJ 3229】 3229: [Sdoi2008]石子合并 (GarsiaWachs算法)

    3229: [Sdoi2008]石子合并 Description 在一个操场上摆放着一排N堆石子.现要将石子有次序地合并成一堆.规定每次只能选相邻的2堆石子合并成新的一堆,并将新的一堆石子数记为该次合 ...

  9. SDNU 1048.石子合并2(区间dp)

    Description 有n堆石子排成一圈,每次选择相邻的两堆石子,将其合并为一堆,记录该次合并的得分为两堆石子个数之和.已知每堆石子的石子个数,求当所有石子合并为一堆时,最小的总得分. Input ...

最新文章

  1. 启动一个java项目http状态 500 - 内部服务器错误_Java web服务器假死分析
  2. 随机从mysql中读取_如何实现MySQL表数据随机读取?从mysql表中读取随机数据
  3. 阿里云Kubernetes服务 - Service Broker快速入门指南
  4. C#/.NET主线程与子线程之间的关系
  5. java工程师的一生_百看不厌之一张图诠释程序员的一生
  6. linkerd mysql_Linkerd和k8s无法正常工作
  7. Vue报错: Maximum call stack size exceeded
  8. This project uses AndroidX dependencies, but the ‘android.useAndroidX‘ property is not enabled
  9. 基于python的网络爬虫系统的设计与实现
  10. Unreal Engine 4学习资料整理
  11. Java实现Excel导入导出(附Demo)
  12. python中stdin_通过python中的stdin发送输入子流程.popen
  13. 张正友相机标定Opencv实现程序(ubuntu下)
  14. 老年手机英文改中文_老年人使用智能手机(九)不会英语不用怕,装一款软件就能出国啦...
  15. 网页游戏行业真的火爆吗?该如何选择?
  16. 找素数(质数):线性筛法和埃氏筛法
  17. Windows截图工具合集
  18. 您的企业适合导入APS系统吗?跟着小编来了解一下吧(上)
  19. 现在做什么副业比较赚钱?多说人都选择这4个副业!
  20. 日志系统优化选型之采集端

热门文章

  1. WordPress整合ckplayer X3视频播放器插件
  2. python中的类怎样理解_深入理解Python中的元类(metaclass)
  3. 39 Spring Boot Shiro权限管理【从零开始学Spring Boot】
  4. @RequestBody、 @RequestParam 、 @PathVariable 和 @Vaild 注解的使用及区别
  5. android studio app字体大小设置,Android Studio App设置TextView文字内容大小颜色
  6. 2022整理国内免费CDN合集
  7. 中国没有真正意义上的海滩比基尼(图)
  8. 转 js控制excel打印完美解决方案
  9. python两两组合_求数组中两两相加等于20的组合(Python实现)
  10. 少儿编程scratch -- 基础篇