自己看之区间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 ...
随机推荐
- npm和cnpm(windows)安装步骤
转载:https://blog.csdn.net/wjnf012/article/details/80422313
- 【uoj#317】[NOI2017]游戏 2-SAT
题目描述 给出 $n$ 个赛车赛道和A.B.C三种赛车,除了 $d$ 个赛道可以使用所有三种赛车以外每个都只能使用给出的两种之一.另外给出 $m$ 条限制:某个赛道使用X则某另一个赛道必须使用Y.问: ...
- LOJ2430:[POI2014]沙拉餐厅Salad Bar——题解
https://loj.ac/problem/2430 是的我BZOJ又没卡过……懒得卡了. 参考:https://blog.csdn.net/zqh_wz/article/details/52887 ...
- HDU.1689 Just a Hook (线段树 区间替换 区间总和)
HDU.1689 Just a Hook (线段树 区间替换 区间总和) 题意分析 一开始叶子节点均为1,操作为将[L,R]区间全部替换成C,求总区间[1,N]和 线段树维护区间和 . 建树的时候初始 ...
- Codeforces 578.C Weakness and Poorness
C. Weakness and Poorness time limit per test 2 seconds memory limit per test 256 megabytes input sta ...
- hibernate、mybatis、spring data 的对比
转: 1.概念: Hibernate :Hibernate是一个开放源代码的对象关系映射框架,它对JDBC进行了非常轻量级的对象封装,使得Java程序员可以随心所欲的使用对象编程思维来操纵数据库.着力 ...
- lightoj 1010 (水题,找规律)
lightoj 1010 Knights in Chessboard 链接:http://lightoj.com/volume_showproblem.php?problem=1010 题意:国际象棋 ...
- 3.UiObejct API 详细介绍
一.点击与长按 1.组件区域位置关系: Rect 对象代表一个矩形区域:[left,Top][ARight,Bottom](即左上角图标到右下角图标) 2.点击与长按相关API: 返回值 API 说明 ...
- myeclipse注册机,自己生成注册码
话不多少,直接上代码 直接可以运行,自己输入key即可 package com.generate.myeclipse.code; import java.io.BufferedReader; impo ...
- [DeeplearningAI笔记]序列模型1.7-1.9RNN对新序列采样/GRU门控循环神经网络
5.1循环序列模型 觉得有用的话,欢迎一起讨论相互学习~Follow Me 1.7对新序列采样 基于词汇进行采样模型 在训练完一个模型之后你想要知道模型学到了什么,一种非正式的方法就是进行一次新序列采 ...