区间DP是一类在区间上进行动态规划的最优问题,一般是根据问题设出一个表示状态的 dp,可以是二维的也可以是三维的,一般情况下为二维。然后将问题划分成两个子问题,也就是一段区间分成左右两个区间,然后将左右两个区间合并到整个区间,或者说局部最优解合并为全局最优解,然后得解。

这类DP可以用常规的for循环来写,也可以用记忆化搜索来写。一般情况下记忆化搜索的代码比较好写,所以一般都用 dfs 来代替获得dp值。然而说到底,这只是一种思想,具体的代码根据题目的不同差别很大,而且有很多需要考虑的细节。


POJ-1651-Multiplication-Puzzle:

#include <algorithm>
#include <cstdio>
#include <cstring>
using namespace std;
int a[104], dp[104][104];
int dfs(int x, int y) {
if (dp[x][y] != -1)
return dp[x][y];
if (x + 1 >= y)
return dp[x][y] = 0;
dp[x][y] = 0x7fffff;
for (int i = x + 1; i < y; i++) {
dp[x][y] = min(dp[x][y], dfs(x, i) + dfs(i, y) + a[x] * a[i] * a[y]);
}
return dp[x][y];
}
int main() {
int n;
while (scanf("%d", &n) == 1) {
memset(a, 0, sizeof a);
memset(dp, -1, sizeof dp);
for (int i = 1; i <= n; i++) {
scanf("%d", &a[i]);
}
printf("%dn", dfs(1, n));
}
}

POJ-2955-Brackets:

#include <algorithm>
#include <cstdio>
#include <cstring>
using namespace std;
char s[104];
int dp[104][104];
bool match(char a, char b) {
return a == '(' && b == ')' || a == '[' && b == ']';
}
int dfs(int x, int y) {
if (dp[x][y] != -1)
return dp[x][y];
if (x + 1 >= y)
return dp[x][y] = 0;
dp[x][y] = 0;
for (int i = x; i < y; i++) {
for (int j = i + 1; j < y; j++) {
if (match(s[i], s[j])) {
dp[x][y] = max(dp[x][y], dfs(i + 1, j) + 1 + dfs(j + 1, y));
}
}
}
return dp[x][y];
} int main() {
while (true) {
memset(dp, -1, sizeof dp);
gets(s);
if (strcmp(s, "end") == 0)
break;
printf("%dn", 2 * dfs(0, strlen(s)));
}
}

区间dp专题小结的更多相关文章

  1. 区间dp专题练习

    区间dp专题练习 题意 1.Equal Sum Partitions ? 这嘛东西,\(n^2\)自己写去 \[\ \] \[\ \] 2.You Are the One 感觉自己智力被吊打 \(dp ...

  2. 区间dp专题

    HDU4283You Are the One区间dp, 记忆话搜索运行时间:   #include <iostream> #include <cstdio> #include ...

  3. 专题训练之区间DP

    例题:以下例题部分的内容来自https://blog.csdn.net/my_sunshine26/article/details/77141398 一.石子合并问题 1.(NYOJ737)http: ...

  4. kuangbin专题十二 POJ3186 Treats for the Cows (区间dp)

    Treats for the Cows Time Limit: 1000MS   Memory Limit: 65536K Total Submissions: 7949   Accepted: 42 ...

  5. 「kuangbin带你飞」专题二十二 区间DP

    layout: post title: 「kuangbin带你飞」专题二十二 区间DP author: "luowentaoaa" catalog: true tags: - ku ...

  6. [kuangbin带你飞]专题二十二 区间DP

            ID Origin Title   17 / 60 Problem A ZOJ 3537 Cake   54 / 105 Problem B LightOJ 1422 Hallowee ...

  7. 区间DP小结

    也写了好几天的区间DP了,这里稍微总结一下(感觉还是不怎么会啊!). 但是多多少少也有了点感悟: 一.在有了一点思路之后,一定要先确定好dp数组的含义,不要模糊不清地就去写状态转移方程. 二.还么想好 ...

  8. UESTC 2015dp专题 A 男神的礼物 区间dp

    男神的礼物 Time Limit: 20 Sec  Memory Limit: 256 MB 题目连接 http://acm.uestc.edu.cn/#/contest/show/65 Descri ...

  9. 【专题】区间dp

    1.[nyoj737]石子合并 传送门:点击打开链接 描述    有N堆石子排成一排,每堆石子有一定的数量.现要将N堆石子并成为一堆.合并的过程只能每次将相邻的两堆石子堆成一堆,每次合并花费的代价为这 ...

  10. 区间DP小结 及例题分析:P1880 [NOI1995]石子合并,P1063 能量项链

    区间类动态规划 一.基本概念 区间类动态规划是线性动态规划的拓展,它在分阶段划分问题时,与阶段中元素出现的顺序和由前一阶段的那些元素合并而来由很大的关系.例如状态f [ i ][ j ],它表示以已合 ...

随机推荐

  1. Android12版本闹钟服务崩溃问题

    原文地址: Android12版本闹钟服务崩溃问题 - Stars-One的杂货小窝 公司项目app线上出现的崩溃记录问题,崩溃日志如下所示: Caused by java.lang.Security ...

  2. Spring Cache + Caffeine的整合与使用

    前言 对于一些项目里需要对数据库里的某些数据一直重复请求的,且这些数据基本是固定的,在这种情况下,可以借助简单使用本地缓存来缓存这些数据.这些介绍一下Spring Cache和Caffeine的使用. ...

  3. 解决报错:Java 8 date/time type `java.time.Duration` not supported by default: add Module "com.fasterxml.jackson.datatype:jackson-datatype-jsr310" to enable handling

    1.错误信息: Java 8 date/time type java.time.Duration not supported by default: add Module "com.fast ...

  4. Redis全文搜索教程之创建索引并关联源数据

    Redis 全文搜索是依赖于 Redis 官方提供的 RediSearch 来实现的.RediSearch 提供了一种简单快速的方法对 hash 或者 json 类型数据的任何字段建立二级索引,然后就 ...

  5. 深入 K8s 网络原理(二)- Service iptables 模式分析

    目录 1. 概述 2. 准备 Service 和 Pods 资源 3. K8s 里 Service 的实现原理 3.1 kube-proxy 组件 3.2 iptables 简介 3.3 iptabl ...

  6. 已解决:若依更换日志EasyExcel框架导出报错 java.lang.NoClassDefFoundError: org/apache/poi/POIXMLTypeLoader

    先描述一下当时的场景 回忆 看到出错了,我就想可能是哪个路径写错了,或者导依赖名字写对,或者说是多了少了标点符号什么的. 然而,还是想简单了,检查重启后发现问题并没有解决. 于是就把所有我改过的地方检 ...

  7. python脚本抢大麦网演唱会门票 ---保姆级教程 python脚本抢大麦网演唱会门票

    python脚本抢大麦网演唱会门票 流程: 1.下载并安装anaconda:https://repo.continuum.io/archive/ 下载对应linux/mac/windows版本 2.下 ...

  8. 文心一言 VS 讯飞星火 VS chatgpt (174)-- 算法导论13.3 3题

    三.用go语言,假设图13-5 和图13-6 中子α.β.γ.δ和ε的黑高都是k.给每张图中的每个结点标上黑高,以验证图中所示的转换能保持性质 5. 文心一言: 在Go语言中,你可以通过以下步骤来为图 ...

  9. ubuntu中vim乱码以及执行shell脚本时出现乱码

    vim打开文件中文出现乱码情况,可以参考如下办法: 在vim /usr/share/vim/vimrc文件末尾中加入 (这个vimrc文件是Vim 的系统级配置文件.文档.插件.语法高亮定义.颜色方案 ...

  10. JavaScript this 绑定详解

    函数内 this 绑定 函数内this的绑定和函数定义的位置没有关系,和调用的方式和调用位置有关系,函数内的this是在被调用执行时被绑定的. this的具体绑定规则 this 绑定基本包含下面4种绑 ...