自己看之区间DP
//菜鸡制作,看的时候可能三目运算符略烦;;;
区间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的更多相关文章
- qscoj 喵哈哈村的打印机游戏 区间dp
点这里去看题 区间dp ,dp[l][r][d]代表从l到r的区间底色为d,具体看代码 第一次见到区间dp...两个小时对着敲了五遍终于自己敲懂了一遍ac #include<bits/stdc+ ...
- BZOJ4856 JSOI2016 病毒感染 区间DP
传送门 原Word文档 题意:太长不给 这种题目一看就是区间DP 设$f_i$表示治愈了前$i$个村子的时候最少死了多少村民,又设前缀和为$sum_i$,通过枚举折返时最后经过的村子$j$,并且提前计 ...
- 洛谷1063 +区间dp(经典问题)
题目网址:https://www.luogu.com.cn/problem/P1063 题意大致是:给定一个序列An,第i个元组表示为(Ai,Ai+1),序列位置不变,当合并一个区间[l,l+1]时开 ...
- 区间dp暂时的理解
因为刚刚看了区间dp,所以写一下对区间dp的理解. 例题: 石子归并 51Nod - 1021 看了一篇博客,觉得他说得比较容易理解,所以再次重复一遍: 假如你是上帝,已经知道了1~n堆石子的最优解, ...
- 【BZOJ-4380】Myjnie 区间DP
4380: [POI2015]Myjnie Time Limit: 40 Sec Memory Limit: 256 MBSec Special JudgeSubmit: 162 Solved: ...
- 区间dp总结篇
前言:这两天没有写什么题目,把前两周做的有些意思的背包题和最长递增.公共子序列写了个总结.反过去写总结,总能让自己有一番收获......就区间dp来说,一开始我完全不明白它是怎么应用的,甚至于看解题报 ...
- light oj 1422 Halloween Costumes (区间dp)
题目链接:http://vjudge.net/contest/141291#problem/D 题意:有n个地方,每个地方要穿一种衣服,衣服可以嵌套穿,一旦脱下的衣服不能再穿,除非穿同样的一件新的,问 ...
- hdu2476 String painter(区间dp)
题目链接:http://acm.split.hdu.edu.cn/showproblem.php?pid=2476 Problem Description There are two strings ...
- LightOJ1033 Generating Palindromes(区间DP/LCS)
题目要计算一个字符串最少添加几个字符使其成为回文串. 一年多前,我LCS这道经典DP例题看得还一知半解时遇到一样的问题,http://acm.fafu.edu.cn/problem.php?id=10 ...
随机推荐
- RPC和WebService的区别
最近分析的这个系统,逻辑架构中有一层是RPC interface.之前对RPC不熟悉,就上网搜索了一下资料,在此总结一下: RPC是Remote Procedure Calling,远程过程调用的缩写 ...
- Spring 学习 5- task 定时任务
Spring-Task 1.这是网上的: 后面是我自己的配置 Spring3.0以后自主开发的定时任务工具,spring task,可以将它比作一个轻量级的Quartz,而且使用起来很简单,除spri ...
- Fetch POST All in One
Fetch POST All in One FPAIO "use strict"; /** * * @author xgqfrms * @license MIT * @copyri ...
- 第188天:extend拷贝创建对象的原理
一.拷贝创建对象的原理 //拷贝创建对象核心代码 function extend(target,source) { //遍历对象 for(var i in source){ target[i] = s ...
- bzoj4032-最短不公共子串
题意 给出两个长度小于等于2000的小写字母串,四个问题: A的最短子串不是B的子串 A的最短子串不是B的子序列 A的最短子序列不是B的子串 A的最短子序列不是B的子序列 分析 虽然求的是不公共,但是 ...
- 【明哥报错簿】之【HTTP Status 500 - Servlet.init() for servlet mvc-dispatcher threw exception】
报错:java.lang.NoClassDefFoundError: /factory/config/EmbeddedValueResolver spring或者jdk的问题,解决办法:spring3 ...
- BZOJ5011 JXOI2017颜色(主席树)
相当于求满足在子段中出现的颜色只在该子段中出现的非空子段数量.这也就相当于其中出现的颜色最左出现的位置在左端点右侧,最右出现的位置在右端点左侧.那么若固定某个端点,仅考虑对该端点的限制,会有一段合法区 ...
- BZOJ4890 Tjoi2017城市
显然删掉的边肯定是直径上的边.考虑枚举删哪一条.然后考虑怎么连.显然新边应该满足其两端点在各自树中作为根能使树深度最小.只要线性求出这个东西就可以了,这与求树的重心的过程类似. #include< ...
- [BZOJ3223]文艺平衡树 无旋Treap
3223: Tyvj 1729 文艺平衡树 Time Limit: 10 Sec Memory Limit: 128 MB Description 您需要写一种数据结构(可参考题目标题),来维护一个 ...
- TCP的拥塞控制 (三)
1. Multiple Packet Losses Fast Retransmit/Fast Recovery机制可以很好地处理单个packet丢失的问题,但当大量packet同时丢包时(一个RT ...