(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的摸索的更多相关文章

  1. 【BZOJ-4380】Myjnie 区间DP

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

  2. 【POJ-1390】Blocks 区间DP

    Blocks Time Limit: 5000MS   Memory Limit: 65536K Total Submissions: 5252   Accepted: 2165 Descriptio ...

  3. 区间DP LightOJ 1422 Halloween Costumes

    http://lightoj.com/volume_showproblem.php?problem=1422 做的第一道区间DP的题目,试水. 参考解题报告: http://www.cnblogs.c ...

  4. BZOJ1055: [HAOI2008]玩具取名[区间DP]

    1055: [HAOI2008]玩具取名 Time Limit: 10 Sec  Memory Limit: 162 MBSubmit: 1588  Solved: 925[Submit][Statu ...

  5. poj2955 Brackets (区间dp)

    题目链接:http://poj.org/problem?id=2955 题意:给定字符串 求括号匹配最多时的子串长度. 区间dp,状态转移方程: dp[i][j]=max ( dp[i][j] , 2 ...

  6. HDU5900 QSC and Master(区间DP + 最小费用最大流)

    题目 Source http://acm.hdu.edu.cn/showproblem.php?pid=5900 Description Every school has some legends, ...

  7. 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 ...

  8. 区间dp总结篇

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

  9. Uva 10891 经典博弈区间DP

    经典博弈区间DP 题目链接:https://uva.onlinejudge.org/external/108/p10891.pdf 题意: 给定n个数字,A和B可以从这串数字的两端任意选数字,一次只能 ...

随机推荐

  1. 5.5 Components -- Customizing A Compnent's Element

    一.概述 默认的,每一个组件都基于一个<div>元素.如果你在开发者工具中查看一个渲染的组件,你将会看到一个像这样的DOM表示: <div id="ember180&quo ...

  2. jQuery源码分析--Event模块(2)

    接下来就是触发事件了.事件触发后的处理函数的分发主要靠两个函数,一个jQuery.event.dispatch,一个是jQuery.event.handlers.这个dispatch会调用handle ...

  3. Ubuntu下常用强化学习实验环境搭建(MuJoCo, OpenAI Gym, rllab, DeepMind Lab, TORCS, PySC2)

    http://lib.csdn.net/article/aimachinelearning/68113 原文地址:http://blog.csdn.net/jinzhuojun/article/det ...

  4. SQL学习笔记之SQL查询练习题1

    (网络搜集) 0x00 表名和字段 –1.学生表 Student(s_id,s_name,s_birth,s_sex) –学生编号,学生姓名, 出生年月,学生性别 –2.课程表 Course(c_id ...

  5. 常用php操作redis命令整理(四)SET类型

    SADD 将一个或多个member元素加入到集合key当中.(从左侧插入,最后插入的元素在0位置),集合中已经存在TK 则返回false,不存在添加成功 返回true <?php var_dum ...

  6. 2017-2018-1 JaWorld 团队作业--冲刺7

    2017-2018-1 JaWorld 团队作业--冲刺7 冲刺博客 冲刺1 冲刺2 冲刺3 冲刺4 冲刺5 项目完成情况 存在的问题 存在的问题是敌机只设置了一种,没能实现多种敌机的游戏设置. 界面 ...

  7. 将vi打造成IDE

    一.环境 发行版:Ubuntu 18.04 LTS 代号:bionic 内核版本:4.15.0-33-generic 二.步骤 2.1 准备工作 sudo apt-get install python ...

  8. 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 ...

  9. Tinkoff Challenge - Elimination Round D. Presents in Bankopolis(区间DP)

    http://codeforces.com/contest/793/problem/D 题意:给出一些点和他们之间的距离,是有向的,这些点从1~n顺序排列,现在选出k个点组成一条路径,使他们之间的距离 ...

  10. POJ 1325 Machine Schedule(最小点覆盖)

    http://poj.org/problem?id=1325 题意: 两种机器A和B.机器A具有n种工作模式,称为mode_0,mode_1,...,mode_n-1,同样机器B有m种工作模式mode ...