区间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可以从这串数字的两端任意选数字,一次只能 ...
随机推荐
- CentOS软件的安装,更新与卸载命令
Linux常见的安装为tar,zip,gz,rpm,deb,bin等.我们可以简单的分为三类. 第一:打包或压缩文件tar,zip,gz等,一般解压后即可,或者解压后运行sh文件: 第二:对应的有管理 ...
- 2.6 The Object Model -- Bindings
一个binding在两个属性之间创建一个链接,当一个改变时,另外一个被自动更新为一个新的值. bindings可以在同一个对象中连接两个属性,或者用在两个不同的对象中. 不像大多数框架一样包含某种形式 ...
- 获取用户真实Ip地址
REMOTE_ADDR 是你的客户端跟你的服务器“握手”时候的IP.如果使用了“匿名代理”,REMOTE_ADDR将显示代理服务器的IP.HTTP_CLIENT_IP 是代理服务器发送的HTTP头.如 ...
- python webdriver 测试框架-数据驱动txt文件驱动,带报告的例子
数据驱动txt文件驱动的方式,带报告 data.txt: gloryroad test||光荣之路 摔跤爸爸||阿米尔 超人||电影 data_driven_by_txt_file.py: #enco ...
- unhandledException详细介绍
http://www.cnblogs.com/eaglet/archive/2009/02/17/1392191.html 1. GC 产生的异常,这种异常通常因为Finalize函数中引发未捕获异常 ...
- 一次频繁Full GC问题排查过程分享
问题描述 应用收到频繁Full GC告警 问题排查 登录到对应机器上去,查看GC日志,发现YGC一分钟已经达到了15次,比Full GC还要频繁一些,其中Full GC平均10分钟超过了4次,如下图 ...
- 20145312 《网络对抗》PC平台逆向破解:注入shellcode和 Return-to-libc 攻击实验
20145312 <网络对抗>PC平台逆向破解:注入shellcode和 Return-to-libc 攻击实验 注入shellcode 实验步骤 1. 准备一段Shellcode 2. ...
- How to install tensorflow on ubuntu 18.04 64bit
Ans:pip install tensorflow (note: version number of pip and python must be consistent)
- HDU 5950 Recursive sequence(矩阵快速幂)题解
思路:一开始不会n^4的推导,原来是要找n和n-1的关系,这道题的MOD是long long 的,矩阵具体如下所示 最近自己总是很坑啊,代码都瞎吉坝写,一个long long的输入写成%d一直判我TL ...
- 自动生成makefile
原文 http://www.laruence.com/2009/11/18/1154.html 作为Linux下的程序开发人员,大家一定都遇到过Makefile,用make命令来编译自己写的程序确实 ...