区间 dp
以一个经典题目引入到正题 :
有 n 堆石子 , 每两堆石子合并会花费一定的价值,所花费的价值即为 两堆石子上的价值和 , 问合并所有的石子后的最小花费 ?
思路分析 :
因为题干可以看成是对每个区间的 的操作,找到问题的子问题 , 即只有一堆石子, 即区间长度为 1 的情况 ,它并不要合并 , 所以花费的代价为 0 ,当有两堆石子时 , 区间长度为 2 , 此时所花费的代价为 为两堆的和 , 当区间长度为 3 时 ,此时分割区间 , 会分成 1 个长度为 1 的区间 和一个长度为 2 的区间 , 长度为 2 的区间所花费的代价在前面已经计算过 , 并且也已经是最优的解 。
代码示例 :
int sum[500];
int dp[230][230]; int main() {
int n, x; while ( ~scanf("%d", &n)){
memset(sum, 0, sizeof(sum)); for(int i = 1; i <= n; i++){
scanf("%d", &x);
sum[i] = sum[i-1] + x;
}
memset(dp, 0, sizeof(dp));
for(int l = 2; l <= n; l++) { // l 表示区间的长度
for(int i = 1; i <= n; i++){ // i 表示区间的始端
int j = l + i - 1; // j 表示区间的尾端
if (j > n) break; // 此判断条件很重要 , 可以优化很多 , 当区间尾超过整个区间长度时 , 即结束此层 for
dp[i][j] = 0x3f3f3f3f;
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]); // 对于每一刀切开的区间 , 最终合并起来的区间还要加上整段区间合并的花费
}
}
}
printf("%d\n", dp[1][n]);
} return 0;
}
区间 dp的更多相关文章
- 【BZOJ-4380】Myjnie 区间DP
4380: [POI2015]Myjnie Time Limit: 40 Sec Memory Limit: 256 MBSec Special JudgeSubmit: 162 Solved: ...
- 【POJ-1390】Blocks 区间DP
Blocks Time Limit: 5000MS Memory Limit: 65536K Total Submissions: 5252 Accepted: 2165 Descriptio ...
- 区间DP LightOJ 1422 Halloween Costumes
http://lightoj.com/volume_showproblem.php?problem=1422 做的第一道区间DP的题目,试水. 参考解题报告: http://www.cnblogs.c ...
- BZOJ1055: [HAOI2008]玩具取名[区间DP]
1055: [HAOI2008]玩具取名 Time Limit: 10 Sec Memory Limit: 162 MBSubmit: 1588 Solved: 925[Submit][Statu ...
- poj2955 Brackets (区间dp)
题目链接:http://poj.org/problem?id=2955 题意:给定字符串 求括号匹配最多时的子串长度. 区间dp,状态转移方程: dp[i][j]=max ( dp[i][j] , 2 ...
- HDU5900 QSC and Master(区间DP + 最小费用最大流)
题目 Source http://acm.hdu.edu.cn/showproblem.php?pid=5900 Description Every school has some legends, ...
- BZOJ 1260&UVa 4394 区间DP
题意: 给一段字符串成段染色,问染成目标串最少次数. SOL: 区间DP... DP[i][j]表示从i染到j最小代价 转移:dp[i][j]=min(dp[i][j],dp[i+1][k]+dp[k ...
- 区间dp总结篇
前言:这两天没有写什么题目,把前两周做的有些意思的背包题和最长递增.公共子序列写了个总结.反过去写总结,总能让自己有一番收获......就区间dp来说,一开始我完全不明白它是怎么应用的,甚至于看解题报 ...
- Uva 10891 经典博弈区间DP
经典博弈区间DP 题目链接:https://uva.onlinejudge.org/external/108/p10891.pdf 题意: 给定n个数字,A和B可以从这串数字的两端任意选数字,一次只能 ...
- 2016 年沈阳网络赛---QSC and Master(区间DP)
题目链接 http://acm.hdu.edu.cn/showproblem.php?pid=5900 Problem Description Every school has some legend ...
随机推荐
- Python--day38--进程同步控制的---锁\信号量\事件的方法名
- H3C配置历史命令缓冲大小--接口视图(console为准)
[wang]user-interface console 0 [wang-ui-console0]history-command max-size 30 //配置缓冲区大小 [wang-ui-c ...
- msbuild 项目文件常用判断条件
在写项目文件的时候,需要根据不同的条件定义或执行不同的代码,有一些比较常使用的判断,本文收藏起来,方便大家找 在 msbuild 的项目文件 cspoj 或 xx.target 等文件里面,可以使用 ...
- js算法(1)
数组排序 arr.sort(function compare(a,b){return b.value-a.value}); json 排序 $.getJSON('URl',function(data) ...
- pytorch中DataLoader, DataSet, Sampler之间的关系
转自:https://mp.weixin.qq.com/s/RTv0cUWvc0kuXBeNoXVu_A 自上而下理解三者关系 首先我们看一下DataLoader.__next__的源代码长什么样,为 ...
- springboot前后端分离项目redis做验证码及用户信息存储验证长时间不操作失效问题解决
1.错误回显:Error in execution; nested exception is io.lettuce.core.RedisCommandExecutionException: MISCO ...
- Spring Boot 整合 slf4j+log4j 实现日志管理
一:首先新建一个jar项目,如下图: 二:添加log4j的依赖,如下pom.xml文件: <project xmlns="http://maven.apache.org/POM/4.0 ...
- c++ 屏幕截图指定窗口句柄后台截图返回位图句柄
/根据窗口句柄后台截图保存成BMP位图文件并且显示到picture 控件上 void GetScreenBmp(HWND hwnd, int left, int top, int width, int ...
- 洛谷$P$2472 蜥蜴 $[SCOI2007]$ 网络流
正解:网络流 解题报告: 传送门! $umm$一看就是个最大流呗,,,就直接考虑怎么建图趴$QwQ$ 首先看到这个高度减小其实就相当于对这个点的次数有约束,就显然拆点呗,流量为高度 然后$S$连向左侧 ...
- VS运行速度缓慢卡顿 2020年1月3日23:25:35
Java中一个类文件对应一个类 C#中一个类文件中可以包含多个类 使用visual studio2017过程中,发现启动调试时,总是会很慢,结束调试也会很慢,在这里可以通过关闭掉IntelliTrac ...