区间dp暂时的理解
因为刚刚看了区间dp,所以写一下对区间dp的理解。
例题:
石子归并
看了一篇博客,觉得他说得比较容易理解,所以再次重复一遍:
假如你是上帝,已经知道了1~n堆石子的最优解,那么它肯定是由两个子堆组成的,
同理,两个子堆也分别都有自己的两个子堆,到最底层肯定是1~n堆石子的自身,
那我们回到最初,1~n堆石子肯定有一个分割点,
dp[ i ][ j ]代表 i 到 j 堆石子的最优解。dp[ 1 ] [ 5 ]=min{dp[1][1]+dp[2][5]+sum, dp[1][2]+dp[3][5]+sum, dp[1][3]+dp[4][5]+sum, dp[1][4]+dp[5][5]+sum};
就以上这么多种情况,以各个点为分界点,求出最小值(sum是价值,假设长度为1,2,3,4的最优解已经求出来了)
要注意的就是dp数组的初始化
#include<iostream>
#include<stdio.h>
#include<string.h>
using namespace std;
int main()
{
int n,dp[110][110],sum[110];
while(~scanf("%d",&n))
{
memset(dp,0x3f3f3f,sizeof(dp));//注意初始化
sum[0]=0;
for(int i=1;i<=n;i++)
{
scanf("%d",&sum[i]);
sum[i]+=sum[i-1];
dp[i][i]=0;//!!!
}
for(int len=1;len<=n;len++)/*枚举“区间”长度*/
{
for(int i=1;i+len<=n+1;i++)/*枚举起点*/
{
int ends=i+len-1;/*终点*/
for(int j=i;j<ends;j++)/*以j为分割点*/
{
dp[i][ends]=min(dp[i][ends],dp[i][j]+dp[j+1][ends]+sum[ends]-sum[i-1]);
// printf("%d %d %d %d\n",len,i,j,ends);
}
}
}
printf("%d\n",dp[1][n]);
}
return 0;
}
区间dp暂时的理解的更多相关文章
- 区间dp 例题
D - 石子合并问题--直线版 HRBUST - 1818 这个题目是一个区间dp的入门,写完这个题目对于区间dp有那么一点点的感觉,不过还是不太会. 注意这个区间dp的定义 dp[i][j] 表示的 ...
- Uva 10891 经典博弈区间DP
经典博弈区间DP 题目链接:https://uva.onlinejudge.org/external/108/p10891.pdf 题意: 给定n个数字,A和B可以从这串数字的两端任意选数字,一次只能 ...
- 【BZOJ-1068】压缩 区间DP
1068: [SCOI2007]压缩 Time Limit: 1 Sec Memory Limit: 128 MBSubmit: 1001 Solved: 615[Submit][Status][ ...
- light oj 1422 Halloween Costumes (区间dp)
题目链接:http://vjudge.net/contest/141291#problem/D 题意:有n个地方,每个地方要穿一种衣服,衣服可以嵌套穿,一旦脱下的衣服不能再穿,除非穿同样的一件新的,问 ...
- 2016"百度之星" - 初赛(Astar Round2A) 1004 D Game 区间DP
D Game Problem Description 众所周知,度度熊喜欢的字符只有两个:B 和D. 今天,它发明了一个游戏:D游戏. 度度熊的英文并不是很高明,所以这里的D,没什么高深的含义,只 ...
- [NYIST737]石子合并(一)(区间dp)
题目链接:http://acm.nyist.edu.cn/JudgeOnline/problem.php?pid=737 很经典的区间dp,发现没有写过题解.最近被hihocoder上几道比赛题难住了 ...
- HDU4283:You Are the One(区间DP)
Problem Description The TV shows such as You Are the One has been very popular. In order to meet the ...
- 动态规划——区间dp
在利用动态规划解决的一些实际问题当中,一类是基于区间上进行的,总的来说,这种区间dp是属于线性dp的一种.但是我们为了更好的分类,这里仍将其单独拿出进行分析讨论. 让我们结合一个题目开始对区间dp的探 ...
- hdu4283 You Are the One 区间DP
题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=4283 自己想了很久还是不会,参考了别人的思路才写的,区间DP还是很弱,继续努力!! 思路: 转载: 题 ...
随机推荐
- 【俗话说】换个角度理解TCP的三次握手和四次挥手
PS:通俗一点的解释都会在引用块中 Nothing is true, Everything is permitted. 0. 什么是TCP TCP,全称Transmission Control Pro ...
- 放弃了程序员互联网高薪,跑去事业单位做IT的尴尬
“你是程序员对吧?”“是啊,怎么了?”“那你帮我修一下电脑吧.”我原来也是一个重点大学毕业,基本上事业里面搞IT就干这些事情,要是以前,我肯定会想,我是程序员和修电脑有啥关系. 但是自从进了事业单位, ...
- 大多数项目中会用到的webpack小技巧
原文地址 本文是作者对自己所学的webpack技巧的总结,在没有指定特殊情况下适用于webpack 3.0版本. 进度汇报 使用webpack --progress --colors这样可以让编译的输 ...
- 一些大厂的css reset 代码
不同的浏览器对标签的默认值不同,为了避免页面出现浏览器差异,所以要初始化样式表属性.使用通配符*并不可取,因为会遍历到每一个标签,大型网页会加载过慢,影响性能. 雅虎工程师提供的CSS初始化示例代码: ...
- DOM3中的自定义事件
DOM3级还定义了自定义事件,自定义事件不是由DOM原生触发的,它的目的是让开发人员创建自己的事件.要创建的自定义事件可以由createEvent("CustomEvent"); ...
- 容器内init进程方案
背景 进程标识符 (PID) 是Linux 内核为每个进程提供的唯一标识符.熟悉docker的同学都知道, 所有的进程 PID都属于某一个PID namespaces, 也就是说容器具有一组自己的 P ...
- 关于Java序列化的问题你真的会吗?
引言 在持久化数据对象的时候我们很少使用Java序列化,而是使用数据库等方式来实现.但是在我看来,Java 序列化是一个很重要的内容,序列化不仅可以保存对象到磁盘进行持久化,还可以通过网络传输.在平时 ...
- Windows下安装虚拟机
一.准备工作 1.下载centos7操作系统 阿里巴巴站点: http://mirrors.aliyun.com/centos/7/isos/x86_64/ 2.下载VMware虚假机 可以直接通过3 ...
- position:absolute和width的关系
碰到如下问题: 如图,我设置了宽高和绝对定位 ,但实际上我图片显示宽度为0: 然后我就查了一下,发现是因为我设了公共img宽度有个max-width:100%:屏蔽掉就有正常宽了,这点暂时没明白为啥 ...
- swoole 异步非堵塞 server/端 client/端 代码,已经测试完毕。贴代码
服务器环境 centos7.0 swoole4.3 php7.2 pcre4.8 nginx1.8 php-fpm server.php <?php class Server { pr ...