poj1651【区间DP·基础】
题意:
给你一串数字,头尾不能动,每次取出一个数字,这个数字贡献=该数字与左右相邻数字的乘积,求一个最小值。
思路:
用dp[s][t]去代表s到t的最小值,包括a[s]和a[t],然后从区间为3开始枚举,对每个小区间枚举一个取出的数,状态转移方程就是:dp[s][t]=min(dp[s][k]+dp[k][j]+a[i]*a[k]*a[j];
PS:
操蛋的区间DP…想了半个小时毛都没想出来。看了自己的思路,是没有去重视这个取的问题,状态的改变就是取的之后,应该从这里一直去思考,对于子结构的观念也不强,怎么说啊,子结构就是一个前一状态,其实就是对于dp[i][j]数组的定义感不强,所以对于转化也不可能有多大的进展。说了那么多,解题最应该的就是这个对于某个位置的取一直要去思考,然后就会想到枚举每个位置了。卧槽,好弱啊,就是这么弱啊,其实没听到区间DP,也会写啊,也不知道为毛这都想不到,看重DP了吧,,,不知道怎么说了,妈的。
贴一发大哥给我的**挫**code…
#include <stdio.h>
#include <limits.h>
#include <string.h>
#define min(a, b) a < b ? a : b
int a[200];
int dp[200][200];
int main()
{
int n;
scanf("%d", &n);
for(int i = 1;i <= n;++i)
scanf("%d", &a[i]);
memset(dp, 0, sizeof(dp));
for(int l = 3;l <= n;++l) //区间长度
{
for(int s = 1;s <= n - l + 1;++s) //区间开头
{
int e = s + l - 1; //长度为l的[s, e]这个区间
dp[s][e] = INT_MAX;
for(int k = s + 1;k <= e - 1;++k) //最后一次取哪个
{
dp[s][e] = min(dp[s][e],dp[s][k] + dp[k][e] + a[s] * a[k] * a[e]);
}
}
}
printf("%d\n", dp[1][n]);
return 0;
}
poj1651【区间DP·基础】的更多相关文章
- poj 2955 Brackets (区间dp基础题)
We give the following inductive definition of a “regular brackets” sequence: the empty sequence is a ...
- poj1651 区间dp
//Accepted 200 KB 0 ms //dp区间 //dp[i][j]=min(dp[i][k]+dp[k][j]+a[i]*a[k]*a[j]) i<k<j #include ...
- cf1114D 区间dp基础
最简单的那类区间dp,昨天晚上心态不对,不知道在打什么.. /* dp[l][r]表示区间[l,r]都涂成同色的代价 dp[l][r]可以由dp[l][r-1],dp[l+1][r],dp[l+1][ ...
- hdoj5115【区间DP·基础】
题意: 有n头wolf排成一排,杀一头wolf回受到受到的伤害=它的本身a[i]+相邻两个b[i-1]+b[i+1].然后杀死第k个位置的wolf的话,k-1和k+1默认相邻(满足的话). 思路: 用 ...
- hdu 2089 不要62 (数位dp基础题)
不要62 Time Limit: 1000/1000 MS (Java/Others) Memory Limit: 32768/32768 K (Java/Others)Total Submis ...
- poj1651(区间dp)
题目连接:http://poj.org/problem?id=1651 题意:给出一组N个数,每次从中抽出一个数(第一和最后一个不能抽),该次的得分即为抽出的数与相邻两个数的乘积.直到只剩下首尾两个数 ...
- 【基础练习】【区间DP】codevs1090 加分二叉树题解
2003 NOIP TG 题目描写叙述 Description 设一个n个节点的二叉树tree的中序遍历为(l,2,3,-,n),当中数字1,2,3,-,n为节点编号.每一个节点都有一个分数(均为正整 ...
- CodeForces-607B:Zuma (基础区间DP)
Genos recently installed the game Zuma on his phone. In Zuma there exists a line of n gemstones, the ...
- 区间dp总结篇
前言:这两天没有写什么题目,把前两周做的有些意思的背包题和最长递增.公共子序列写了个总结.反过去写总结,总能让自己有一番收获......就区间dp来说,一开始我完全不明白它是怎么应用的,甚至于看解题报 ...
随机推荐
- memcache的学习路线图
memcache学习材料 //memcache自带的github 上的 wiki //席剑飞 Memcache(MC)系列 1~8系列 评注: memcache系统写的最深的一博客,建议一读 ...
- Tomcat载入两次问题
前提介绍: 1.某个应用Dragon放置路径:/opt/apache-tomcat-7.0.47/webapps/Dragon 2.Tomcat的server.xml部分配置信息例如以下: &l ...
- Youth is not a time of life, it is a state of mind.
青春不是生命的一段,而是一种精神状态.
- 自己定义html中a标签的title提示tooltip
自己定义html中a标签的title提示tooltip 简单介绍 用简单的jquery+CSS创建自己定义的a标签title提示,用来取代浏览器默认行为.如图: watermark/2/text/aH ...
- 走入asp.net mvc不归路:[6]linq常见用法
asp.net mvc结合linq,先不说性能问题,对于增删查改的操作还是相当方便的.以下我们就来介绍一下linq在asp.net mvc的Controller中的常见用法. 1 首先来看看整个数据表 ...
- iOS Webview 与 app交互
有时候我们在内嵌的webview中希望点击一个链接之后,触发iOS原生事件,而不是webview内页面跳转(因为webview的跳转很生硬,而ajax+js模拟则不如原生segue平滑). 有时候我们 ...
- Linux下mount FreeBSD分区
假设须要从第二块硬盘复制文件.该硬盘格式化为UFS 2文件系统.怎样mount 由FreeBSD创建的UFS 2文件系统到Ubuntu系统上呢? UFS文件系统广泛的使用在不同的操作系统(比如:HP- ...
- JavaScript提高:001:ASP.NET使用easy UI
jQuery EasyUI是一组基于jQuery的UI插件集合.能够简洁的开发出功能多内容丰富的界面,而不须要开发人员自己费力的写那些复杂的js代码.本文简介在ASP.NET开发中引用这些js文件和样 ...
- 嵌入式开发之davinci--- 8148/8168/8127 中的添加算饭scd 场景检测 代码实现
http://blog.csdn.net/mianhuantang848989/article/details/38035731 http://www.61ic.com/Article/DaVinci ...
- python day - 8 文件
文件的相关操作 1.文件的两种路径 绝对路径:需要从根目录下一层一层往下去找,文件或者程序所在的地方,中间所经过的所有的路径到你要找的文件或程序,就是绝对路径. 相对路径:只需要将要找的文件或者程序, ...