题意:

给你一串数字,头尾不能动,每次取出一个数字,这个数字贡献=该数字与左右相邻数字的乘积,求一个最小值。

思路:

用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·基础】的更多相关文章

  1. poj 2955 Brackets (区间dp基础题)

    We give the following inductive definition of a “regular brackets” sequence: the empty sequence is a ...

  2. 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 ...

  3. cf1114D 区间dp基础

    最简单的那类区间dp,昨天晚上心态不对,不知道在打什么.. /* dp[l][r]表示区间[l,r]都涂成同色的代价 dp[l][r]可以由dp[l][r-1],dp[l+1][r],dp[l+1][ ...

  4. hdoj5115【区间DP·基础】

    题意: 有n头wolf排成一排,杀一头wolf回受到受到的伤害=它的本身a[i]+相邻两个b[i-1]+b[i+1].然后杀死第k个位置的wolf的话,k-1和k+1默认相邻(满足的话). 思路: 用 ...

  5. hdu 2089 不要62 (数位dp基础题)

    不要62 Time Limit: 1000/1000 MS (Java/Others)    Memory Limit: 32768/32768 K (Java/Others)Total Submis ...

  6. poj1651(区间dp)

    题目连接:http://poj.org/problem?id=1651 题意:给出一组N个数,每次从中抽出一个数(第一和最后一个不能抽),该次的得分即为抽出的数与相邻两个数的乘积.直到只剩下首尾两个数 ...

  7. 【基础练习】【区间DP】codevs1090 加分二叉树题解

    2003 NOIP TG 题目描写叙述 Description 设一个n个节点的二叉树tree的中序遍历为(l,2,3,-,n),当中数字1,2,3,-,n为节点编号.每一个节点都有一个分数(均为正整 ...

  8. CodeForces-607B:Zuma (基础区间DP)

    Genos recently installed the game Zuma on his phone. In Zuma there exists a line of n gemstones, the ...

  9. 区间dp总结篇

    前言:这两天没有写什么题目,把前两周做的有些意思的背包题和最长递增.公共子序列写了个总结.反过去写总结,总能让自己有一番收获......就区间dp来说,一开始我完全不明白它是怎么应用的,甚至于看解题报 ...

随机推荐

  1. Linux内存管理之mmap详解 (可用于android底层内存调试)

    注:将android底层malloc换为mmap来获取内存,可将获取到的内存添加tag,从而再利用meminfo进行分析,可单独查看该tag的内存,从而进行分析. 一. mmap系统调用 1. mma ...

  2. DOM编程 --《高性能JavaScript》

    1.重绘和重排 浏览器下载完页面的所有组件 —— HTML标记,CSS,JavaScript,图片,会解析并生成两个内部数据结构. DOM树 表示页面结构 渲染树(CSS) 表示DOM节点如何显示 当 ...

  3. 关于Widget预览图的改动

    在做项目时候,由于常常不带GPS功能.所以在有些细节上须要做处理,当中之中的一个就是.快捷开关的预览图和实际效果图的差异 在我们快捷开关的预览图中,总是能够看到五个快捷开关,事实上就包含GPS信息 而 ...

  4. JSON-RPC 2.0规范 翻译 中文版

    JSON-RPC 2.0规范 起源日期: 2010-03-26(基于2009-05-24的版本号) 修正: 2013-01-04 作者: JSON-RPC 工作组 <json-rpc@googl ...

  5. Centos-tomcat-安装配置apr

    [root@zyzzw_jk tools]# tar -zxvf apr-1.5.2.tar.gz[root@zyzzw_jk tools]# tar -zxvf apr-util-1.5.4.tar ...

  6. openwrt gstreamer实例学习笔记(一.初始化gstreamer)

    GStreamer 是一个非常强大而且通用的流媒体应用程序框架. GStreamer所具备的很多优点来源于其框架的模块化: GStreamer能够无缝的合并新的插件. 但是, 由于追求模块化和高效率, ...

  7. (转)OutOfMemory时抓取heap 快照

    转自:https://testerhome.com/topics/579 首先说一下,在程序没有崩溃的时候如何抓取heap快照.这个大家应该都知道,在ddms中自带此功能.   见上图首先我们选中一个 ...

  8. BAPI_PO_CEATE 与PO_1

  9. JVM垃圾回收算法 及 垃圾收集器

    摘自<深入理解Java虚拟机> 一.什么是: GC算法是 方法论,那么垃圾收集器就是具体的 实现. 二.四种 垃圾回收算法 1.标记-清除算法:最基础的收集算法:不足有两点:1标记和清除两 ...

  10. timestamp 转 date 处理后再转timestamp

    package com.jmu.ccjoin.service.impl; import java.sql.Timestamp;import java.util.Calendar;import java ...