洛谷P1775 石子合并(弱化版)
原题传送门
题目描述
设有 N(N≤300)N(N \le 300)N(N≤300) 堆石子排成一排,其编号为1,2,3,⋯,N1,2,3,\cdots,N1,2,3,⋯,N。每堆石子有一定的质量 mi(mi≤1000)m_i(m_i \le 1000)mi(mi≤1000)。现在要将这 NNN 堆石子合并成为一堆。每次只能合并相邻的两堆,合并的代价为这两堆石子的质量之和,合并后与这两堆石子相邻的石子将和新堆相邻。合并时由于选择的顺序不同,合并的总代价也不相同。试找出一种合理的方法,使总的代价最小,并输出最小代价。
输入格式
第一行,一个整数 NNN。
第二行,NNN 个整数 mim_imi。
输出格式
输出文件仅一个整数,也就是最小代价。
输入输出样例
输入 #1
4
2 5 3 1
输出 #1
22
题解
这是一道区间动规模板题
状态
dpi,jdp_{i,j}dpi,j表示合并[i,j][i,j][i,j]区间的石子所需要的最小代价。
转移方程
将kkk做为[i,j][i,j][i,j]的分割点,那么[i,j][i,j][i,j]在kkk的最优解:
dpi,j=mini≤k≤j(dpi,k+dpk+1,j+∑p=ijap)dp_{i,j}= \min_{i\le k \le j}(dp_{i,k} + dp_{k+1,j} + \sum_{p=i}^ja_p)dpi,j=mini≤k≤j(dpi,k+dpk+1,j+∑p=ijap)
∑p=ijap\sum_{p=i}^ja_p∑p=ijap 可用前缀和实现
初始值
dpi,i=0dp_{i,i}=0dpi,i=0
答案
dp1,ndp_{1,n}dp1,n
代码
#include<bits/stdc++.h>
using namespace std;
const int MAX = 301;
int n;
int m[MAX],sum[MAX],dp[MAX][MAX];
int main(){cin >> n;for(int i=1;i<=n;i++)cin >> m[i];memset(dp,0x3f,sizeof(dp));for(int i=1;i<=n;i++)dp[i][i] = 0;for(int i=1;i<=n;i++)sum[i] = sum[i-1]+m[i];for(int len=2;len<=n;len++)for(int i=1;i+len-1<=n;i++){int j = i+len-1;for(int k=i;k<j;k++)dp[i][j] = min(dp[i][j],dp[i][k]+dp[k+1][j]+sum[j]-sum[i-1]);}cout << dp[1][n];return 0;
}
洛谷P1775 石子合并(弱化版)相关推荐
- 洛谷 P1775 合并石子(弱化版)
文章目录 合并石子(弱化版) 一.题目描述 二.思路 三.代码 合并石子(弱化版) 一.题目描述 https://www.luogu.com.cn/problem/P1775 设有 N(N \le 3 ...
- P1775 石子合并(弱化版)(区间DP)
题目链接:石子合并(弱化版) - 洛谷 分析:这个显然就是一个区间DP,定义f[i][j]为将第i~j堆石子合并成一堆石子所需要的最小代价,我们可以枚举最后一次将第i~j堆石子合并成一堆石子是以k为分 ...
- P1775 石子合并(弱化版)(区间dp模板)
石子合并(弱化版) - 洛谷 /** @Description: To iterate is human, to recurse divine.* @Autor: Recursion* @Date: ...
- 洛谷题单的Python版题解(有需要的小伙伴可以来看看哦~!)
我的洛谷博客 记得从这里搜索题目,分类有些问题.
- 贪心算法——洛谷(P1090)[NOIP2004]合并果子
该题目也属于经典的贪心算法,在这里熟悉C++里优先队列的使用. 需要导入头文件: #include<queue> 从这个问题可以深挖出神奇的哈夫曼树问题. 因为这题里合并的是二叉树,所 ...
- 【洛谷1090】合并果子
题目描述 在一个果园里,多多已经将所有的果子打了下来,而且按果子的不同种类分成了不同的堆.多多决定把所有的果子合成一堆. 每一次合并,多多可以把两堆果子合并到一起,消耗的体力等于两堆果子的重量之和.可 ...
- 洛谷 P1631 序列合并
嗯... 题目链接:https://www.luogu.org/problem/P1631 这道题很明显的是一个堆的问题,要开一个结构体的堆(结构体中记录下标.内容.个数)... 首先,把A和B两个序 ...
- 洛谷——P1775 古代人的难题_NOI导刊2010提高(02) P1936 水晶灯火灵(斐波那契数列)...
P1775 古代人的难题_NOI导刊2010提高(02) P1936 水晶灯火灵 斐波那契数列 1.x,y∈[1-k],且x,y,k∈Z 2.(x^2-xy-y^2)^2=1 给你一个整数k,求一组满 ...
- 洛谷—— P1775 古代人的难题_NOI导刊2010提高(02)
P1775 古代人的难题_NOI导刊2010提高(02) 题目描述 门打开了,里面果然是个很大的厅堂.但可惜厅堂内除了中央的一张羊皮纸和一支精致的石笔,周围几具骷髅外什么也没有.难道这就是王室的遗产? ...
最新文章
- [云炬python3玩转机器学习] 6-1什么是梯度下降法
- leetcode-551-Student Attendance Record I(判断是否出现连续几个相同字符)
- diskgenius 接触“只读“失败_相亲总是失败,这三个步骤你都做了吗?
- 半监督学习【机器学习】
- php 分支排序,php – 基于类别和分支的Mysql排名
- 除了富二代 据说这9种人最有富豪潜质
- 2021-07-31mysql 登录退出
- 实现子元素在父元素中水平垂直都居中笔记
- 「ds」网络操作系统和分布式操作系统之间的区别
- python查看指定文件的绝对路径和当前工作路径
- 如果不能产生价值,阅读便毫无意义
- 如何在CentOS8服务器上启用PowerTools
- 2022年第三次面试,含泪整理万字面试题。
- 开源配置管理系统的选择和搭建
- 第九章 科学、技术与工业
- gitlab自动同步github
- DCIC2021 入门数据比赛(1)
- 数字化时代-11:从马斯洛需求层次看未来选择做什么样的产品
- 国外10个ASP.Net C#下的开源CMS
- android WebView清除缓存