//菜鸡制作,看的时候可能三目运算符略烦;;;

区间DP入门题:Brackets

地址:http://59.77.139.92/Problem.jsp?pid=1463

分析(对区间DP的代码原理进行分步解析):

 for(k=; k<L; k++)
{
for(i=, j=k; j<L; i++, j++)
{
if(s[i]=='['&&s[j]==']'||s[i]=='('&&s[j]==')')
dp[i][j]=dp[i+][j-]+;
for(x=i; x<j; x++)
dp[i][j]=max(dp[i][j], dp[i][x]+dp[x+][j]);
}
}

样例:()()()

变量是一一对应的应该;

区间DP原理就可以理清楚了。

然后我们看一下这题:刺激的摩托飞艇

地址:http://59.77.139.92/Problem.jsp?pid=2382

这一题求最小拆除路线实际上就是求最大不相交路线的数量, 也就是和上面那一题一模一样,但是这一题变通的地方在于dp数组一开始就要赋值,相连则dp[i][j]=1, 其他的地方完全可以照搬

 #include<stdio.h>
#define max(a, b) a>b?a:b
int n, i, j, k, l, dp[][], a;
int main( )
{
scanf("%d", &n);
while(n--)
scanf("%d%d", &j, &k), j>k?dp[k][j]=:dp[j][k]=;
for(k=, n=; k<n; k++)
for(i=, j=k; j<n; j++, i++)
{
for(l=i+, a=; l<j; l++)
a=max(a, dp[i][l]+dp[l][j]);
dp[i][j]+=a;
}
printf("%d\n", dp[][]);
}

例三:石子合并

地址:http://59.77.139.92/Problem.jsp?pid=2385

这一题的区别点就是石子是环状的,那么我们就可以简单的对数组进行延长操作来求, 其他核心基本上不变

 #include<stdio.h>
#define min(a, b) a<b?a:b
int dp[][], i, j, k, l, n, a[], sum[];
int main( )
{
scanf("%d", &n);
for(i=; i<n; i++)
scanf("%d", &a[i]), i?sum[i]=a[i]+sum[i-]:sum[i]=a[i];///sum数组记录前缀和
for(i=n; i<*n; i++)
a[i]=a[i-n], sum[i]=sum[i-]+a[i];///增长
for(k=; k<n; k++)
for(i=, j=k; j<*n; i++, j++)
for(l=i, dp[i][j]=0x3f3f3f; l<j; l++)
dp[i][j]=min(dp[i][j], dp[i][l]+dp[l+][j]+sum[j]-sum[i-]);
for(i=, j=0x3f3f3f; i<n; i++)
if(j>dp[i][i+n-]&&dp[i][i+n-])
j=dp[i][i+n-];
printf("%d\n", j);
}

自己看之区间DP的更多相关文章

  1. qscoj 喵哈哈村的打印机游戏 区间dp

    点这里去看题 区间dp ,dp[l][r][d]代表从l到r的区间底色为d,具体看代码 第一次见到区间dp...两个小时对着敲了五遍终于自己敲懂了一遍ac #include<bits/stdc+ ...

  2. BZOJ4856 JSOI2016 病毒感染 区间DP

    传送门 原Word文档 题意:太长不给 这种题目一看就是区间DP 设$f_i$表示治愈了前$i$个村子的时候最少死了多少村民,又设前缀和为$sum_i$,通过枚举折返时最后经过的村子$j$,并且提前计 ...

  3. 洛谷1063 +区间dp(经典问题)

    题目网址:https://www.luogu.com.cn/problem/P1063 题意大致是:给定一个序列An,第i个元组表示为(Ai,Ai+1),序列位置不变,当合并一个区间[l,l+1]时开 ...

  4. 区间dp暂时的理解

    因为刚刚看了区间dp,所以写一下对区间dp的理解. 例题: 石子归并 51Nod - 1021 看了一篇博客,觉得他说得比较容易理解,所以再次重复一遍: 假如你是上帝,已经知道了1~n堆石子的最优解, ...

  5. 【BZOJ-4380】Myjnie 区间DP

    4380: [POI2015]Myjnie Time Limit: 40 Sec  Memory Limit: 256 MBSec  Special JudgeSubmit: 162  Solved: ...

  6. 区间dp总结篇

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

  7. light oj 1422 Halloween Costumes (区间dp)

    题目链接:http://vjudge.net/contest/141291#problem/D 题意:有n个地方,每个地方要穿一种衣服,衣服可以嵌套穿,一旦脱下的衣服不能再穿,除非穿同样的一件新的,问 ...

  8. hdu2476 String painter(区间dp)

    题目链接:http://acm.split.hdu.edu.cn/showproblem.php?pid=2476 Problem Description There are two strings ...

  9. LightOJ1033 Generating Palindromes(区间DP/LCS)

    题目要计算一个字符串最少添加几个字符使其成为回文串. 一年多前,我LCS这道经典DP例题看得还一知半解时遇到一样的问题,http://acm.fafu.edu.cn/problem.php?id=10 ...

随机推荐

  1. py27使用redis

    1.安装redis pip install redis 转载请注明博客出处:http://www.cnblogs.com/cjh-notes/

  2. FZU2127_养鸡场

    题目的意思为要你求出满足三边范围条件且周长为n的三角形的数目. 其实做法是直接枚举最短边,然后就可以知道第二条边的取值范围,同时根据给定的范围缩小范围. 同时根据第二条边的范围推出第三条边的范围,再次 ...

  3. python的N个小功能之正则匹配

    1.. 匹配任意除换行符“\n”外的字符:2.*表示匹配前一个字符0次或无限次:3.+或*后跟?表示非贪婪匹配,即尽可能少的匹配,如*?重复任意次,但尽可能少重复,惰性匹配:4. .*? 表示匹配任意 ...

  4. iOS pch文件的创建

    3.iso pch头文件的创建  输入文件名的时候记得打钩 3.1.在Build Settings 里搜索pref就能找到preflx, 点击设置相对路径 $(SRCROOT) +路径:成功了就会显示 ...

  5. [COCI2011-2012#5] POPLOCAVANJE 后缀自动机

    题面:洛谷 题解: 其实还可以用AC自动机做,但是没调出来,,,不知道发生了什么... AC自动机做法如下: 观察到如果我们对给定的每个串建AC自动机,那么直接拿大串在上面匹配,如果遇到了一个单词的终 ...

  6. c语言中,指针加1的情况.指针变量详细介绍

    指针是一个特殊的变量,它里面存储的数值被解释成为内存里的一个地址. 要搞清一个指针需要搞清指针的四方面的内容: 指针的类型, 指针所指向的 类型, 指针的值或者叫指针所指向的内存区, 还有指针本身所占 ...

  7. SQL注入(SQL Injection)案例和防御方案

    sql注入(SQL Injection):就是通过把SQL命令插入到Web表单递交或输入域名或页面请求的查询字符串,最终达到欺骗服务器执行恶意的SQL命令. SQL注入攻击的主要危害包括:非法读取.篡 ...

  8. C++之面向对象编程20170912

    /*************************************************************************************************** ...

  9. PID控制算法的C语言实现八 变积分的PID控制算法C语言实现

    变积分PID可以看成是积分分离的PID算法的更一般的形式.在普通的PID控制算法中,由于积分系数ki是常数,所以在整个控制过程中,积分增量是不变的.但是,系统对于积分项的要求是,系统偏差大时,积分作用 ...

  10. 洛谷P3144 [USACO16OPEN]关闭农场Closing the Farm_Silver

    题目描述 Farmer John and his cows are planning to leave town for a long vacation, and so FJ wants to tem ...