区间DP的摸索
(poj真的炸了,以下代码可能有误)
按照下面这个做题顺序,对区间DP不再那么迷了
LOJ1422
是 dp[i][j]=min(dp[i][j],dp[i+1][k-1]+dp[k][j])而不是dp[i][j]=min(dp[i][j],dp[i+1][k-1]+dp[k+1][j]+dp[k][k]);
因为ai==ak的时候k不是等着i来匹配,而是先用ak-aj之间的匹配结果来和ai匹配,防止之间有am==ak
POJ2955 poj爆炸了吗?
POJ3280 不用变量k(密码脱落)
POJ1141 不会记录路
POJ1651 easy
POJ3661主要是休息的时候,要一次性休息完
Light OJ1422
#include<cstdio>
#include<cstdlib>
#include<iostream>
#include<memory.h>
#include<algorithm>
#include<cstring>
#include<string>
using namespace std;
int dp[][],a[];
int main()
{
int T,n,i,j,k,Case=;
scanf("%d",&T);
while(T--){
scanf("%d",&n);
for(i=;i<=n;i++) cin>>a[i];
for(i=;i<=n;i++) dp[i][i]=;
for(i=n-;i>=;i--){
for(j=i+;j<=n;j++){
dp[i][j]=dp[i+][j]+;
for(k=i+;k<=j;k++)
if(a[i]==a[k])
dp[i][j]=min(dp[i][j],dp[i+][k-]+dp[k][j]);
}
}
printf("Case %d: %d\n",++Case,dp[][n]);
}
return ;
}
POJ1651
#include<cstdio>
#include<cstdlib>
#include<iostream>
#include<algorithm>
#include<cstring>
#include<string>
using namespace std;
int dp[][],a[];
int main()
{
int T,n,i,j,k,Case=;
while(~scanf("%d",&n)){
memset(dp,,sizeof(dp));
for(i=;i<=n;i++) cin>>a[i];
for(i=n-;i>=;i--){
for(j=i+;j<=n;j++){
dp[i][j]=dp[i+][j]+a[i]*a[i+]*a[j];
for(k=i;k<=j;k++)
if(k>i&&k<j)
dp[i][j]=min(dp[i][j],dp[i][k]+dp[k][j]+a[k]*a[i]*a[j]);
}
}
printf("%d\n",dp[][n]);
}
return ;
}
POJ2955
#include<cstdio>
#include<cstdlib>
#include<iostream>
#include<algorithm>
#include<cstring>
using namespace std;
int _max(int x,int y){
if(x>y) return x;
return y;
}
int dp[][];
char a[];
int main()
{
int n,i,j,k;
while(scanf("%s",a+)){
if(a[]=='e') return ;
n=strlen(a+);
memset(dp,,sizeof(dp));
for(i=n-;i>=;i--){
for(j=i+;j<=n;j++){
dp[i][j]=dp[i+][j];
for(k=i+;k<=j;k++)
if((a[i]=='('&&a[k]==')')||(a[i]=='['&&a[k]==']'))
dp[i][j]=_max(dp[i][j],dp[i+][k-]+dp[k+][j]+);
}
}
printf("%d\n",dp[][n]);
}
return ;
}
POJ3661
#include<cstdio>
#include<iostream>
#include<cstring>
#include<algorithm>
using namespace std;
int dp[][];
int n,m,a[];
int main()
{
int i,j,k,ans;
while(scanf("%d%d",&n,&m)==){
for(i=;i<=n;i++) scanf("%d",&a[i]);
ans=;
memset(dp,,sizeof(dp));
for(i=;i<=n;i++){
dp[i][]=dp[i-][];
for(j=;j<=m;j++)
dp[i][j]=dp[i-][j-]+a[i];
for(k=;k<=min(m,i);k++)
dp[i][]=max(dp[i][],dp[i-k][k]);
}
printf("%d\n",dp[n][]);
}
return ;
}
区间DP的摸索的更多相关文章
- 【BZOJ-4380】Myjnie 区间DP
4380: [POI2015]Myjnie Time Limit: 40 Sec Memory Limit: 256 MBSec Special JudgeSubmit: 162 Solved: ...
- 【POJ-1390】Blocks 区间DP
Blocks Time Limit: 5000MS Memory Limit: 65536K Total Submissions: 5252 Accepted: 2165 Descriptio ...
- 区间DP LightOJ 1422 Halloween Costumes
http://lightoj.com/volume_showproblem.php?problem=1422 做的第一道区间DP的题目,试水. 参考解题报告: http://www.cnblogs.c ...
- BZOJ1055: [HAOI2008]玩具取名[区间DP]
1055: [HAOI2008]玩具取名 Time Limit: 10 Sec Memory Limit: 162 MBSubmit: 1588 Solved: 925[Submit][Statu ...
- poj2955 Brackets (区间dp)
题目链接:http://poj.org/problem?id=2955 题意:给定字符串 求括号匹配最多时的子串长度. 区间dp,状态转移方程: dp[i][j]=max ( dp[i][j] , 2 ...
- HDU5900 QSC and Master(区间DP + 最小费用最大流)
题目 Source http://acm.hdu.edu.cn/showproblem.php?pid=5900 Description Every school has some legends, ...
- BZOJ 1260&UVa 4394 区间DP
题意: 给一段字符串成段染色,问染成目标串最少次数. SOL: 区间DP... DP[i][j]表示从i染到j最小代价 转移:dp[i][j]=min(dp[i][j],dp[i+1][k]+dp[k ...
- 区间dp总结篇
前言:这两天没有写什么题目,把前两周做的有些意思的背包题和最长递增.公共子序列写了个总结.反过去写总结,总能让自己有一番收获......就区间dp来说,一开始我完全不明白它是怎么应用的,甚至于看解题报 ...
- Uva 10891 经典博弈区间DP
经典博弈区间DP 题目链接:https://uva.onlinejudge.org/external/108/p10891.pdf 题意: 给定n个数字,A和B可以从这串数字的两端任意选数字,一次只能 ...
随机推荐
- 5.5 Components -- Customizing A Compnent's Element
一.概述 默认的,每一个组件都基于一个<div>元素.如果你在开发者工具中查看一个渲染的组件,你将会看到一个像这样的DOM表示: <div id="ember180&quo ...
- jQuery源码分析--Event模块(2)
接下来就是触发事件了.事件触发后的处理函数的分发主要靠两个函数,一个jQuery.event.dispatch,一个是jQuery.event.handlers.这个dispatch会调用handle ...
- Ubuntu下常用强化学习实验环境搭建(MuJoCo, OpenAI Gym, rllab, DeepMind Lab, TORCS, PySC2)
http://lib.csdn.net/article/aimachinelearning/68113 原文地址:http://blog.csdn.net/jinzhuojun/article/det ...
- SQL学习笔记之SQL查询练习题1
(网络搜集) 0x00 表名和字段 –1.学生表 Student(s_id,s_name,s_birth,s_sex) –学生编号,学生姓名, 出生年月,学生性别 –2.课程表 Course(c_id ...
- 常用php操作redis命令整理(四)SET类型
SADD 将一个或多个member元素加入到集合key当中.(从左侧插入,最后插入的元素在0位置),集合中已经存在TK 则返回false,不存在添加成功 返回true <?php var_dum ...
- 2017-2018-1 JaWorld 团队作业--冲刺7
2017-2018-1 JaWorld 团队作业--冲刺7 冲刺博客 冲刺1 冲刺2 冲刺3 冲刺4 冲刺5 项目完成情况 存在的问题 存在的问题是敌机只设置了一种,没能实现多种敌机的游戏设置. 界面 ...
- 将vi打造成IDE
一.环境 发行版:Ubuntu 18.04 LTS 代号:bionic 内核版本:4.15.0-33-generic 二.步骤 2.1 准备工作 sudo apt-get install python ...
- Educational Codeforces Round 47 D
Let's call an undirected graph $G=(V,E)$ relatively prime if and only if for each edge $(v,u)∈E$ $GC ...
- Tinkoff Challenge - Elimination Round D. Presents in Bankopolis(区间DP)
http://codeforces.com/contest/793/problem/D 题意:给出一些点和他们之间的距离,是有向的,这些点从1~n顺序排列,现在选出k个点组成一条路径,使他们之间的距离 ...
- POJ 1325 Machine Schedule(最小点覆盖)
http://poj.org/problem?id=1325 题意: 两种机器A和B.机器A具有n种工作模式,称为mode_0,mode_1,...,mode_n-1,同样机器B有m种工作模式mode ...