HDU_4960 2014多校9 Another OCD Patient DP
其实现在想起来是个巨简单的DP,模型就跟LCS很像,比赛的时候居然没想出来,在聪哥提醒下还卡了个地方
就是说给定一串n个数字的序列,可以连续合并,最终使得序列是回文的,题目也给定了合并数字所需的代价,合并一个为0,合并2个 3个。。n个的代价都有
题目比较新意的地方就是回文,这也是我们要解决的主要地方,回文。。其实用前缀和+后缀和就可以解决了。。。
用记忆化搜索写起来比较方便,每次对于求的L和R,枚举i,j,使得 L-i合并之后可以与j-R合并之后回文,然后递归处理i和j即可。
#include <iostream>
#include <cstdio>
#include <cstring>
#include <algorithm>
#define LL __int64
using namespace std;
LL pre[5010];
int A[5010];
int n;
int dp[5010][5010];
int dfs(int l,int r)
{
if (l>r) return 0;
if (dp[l][r]!=-1) return dp[l][r];
dp[l][r]=A[r-l+1];
int p=l,q=r;
for (p=l,q=r;p<q;)
{
if ((pre[p]-pre[l-1])<(pre[r]-pre[q-1])){
p++;continue;
}
if ((pre[p]-pre[l-1])>(pre[r]-pre[q-1])){
q--;continue;
}
if ((pre[p]-pre[l-1])==(pre[r]-pre[q-1])){
dp[l][r]=min(dp[l][r],A[p-l+1]+dfs(p+1,q-1)+A[r-q+1]);
p++;
}
}
return dp[l][r];
}
int main()
{
while (scanf("%d",&n)!=EOF)
{
if (n==0) break;
for (int i=1;i<=n;i++){
scanf("%I64d",&pre[i]);
pre[i]+=pre[i-1];
for (int j=1;j<=n;j++) dp[i][j]=-1;
}
for (int i=1;i<=n;i++) scanf("%d",&A[i]);
printf("%d\n",dfs(1,n));
}
return 0;
}
HDU_4960 2014多校9 Another OCD Patient DP的更多相关文章
- hdu 4960 Another OCD Patient(dp)
		Another OCD Patient Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 131072/131072 K (Java/Ot ... 
- hdu 4960 Another OCD Patient (最短路 解法
		http://acm.hdu.edu.cn/showproblem.php?pid=4960 2014 Multi-University Training Contest 9 Another OCD ... 
- HDU4960Another OCD Patient(间隙dp,后座DP)
		Another OCD Patient Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 131072/131072 K (Java/Ot ... 
- HDU 4960 Another OCD Patient(记忆化搜索)
		HDU 4960 Another OCD Patient pid=4960" target="_blank" style="">题目链接 记忆化 ... 
- 2014 (多校)1011 ZCC Loves Codefires
		自从做了多校,整个人都不好了,老是被高中生就算了,题老是都不懂=-=原谅我是个菜鸟,原谅我智力不行.唯一的水题. Problem Description Though ZCC has many Fan ... 
- 【HDU】4923 Room and Moor(2014多校第六场1003)
		Room and Moor Time Limit: 12000/6000 MS (Java/Others) Memory Limit: 262144/262144 K (Java/Others) ... 
- HDU 4869 Turn the pokers (2014多校联合训练第一场1009) 解题报告(维护区间 + 组合数)
		Turn the pokers Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 32768/32768 K (Java/Others) ... 
- hdu4940 Destroy Transportation system(2014多校联合第七场)
		题意很容易转化到这样的问题:在一个强连通的有向图D中是否存在这样的集合划分S + T = D,从S到T集合的边权大于从T到S集合的边权. 即D(i, j) > B(j, i) + D(j, i ... 
- hdu4935 Prime Tree(2014多校联合第七场)
		首先这是一道dp题,对题意的把握和对状态的处理是解题关键. 题目给出的范围是n在1到1e11之间,由于在裂变过称中左儿子总是父亲节点的一个非平凡约数,容易看出裂变过程只与 素数幂有关,并且显然有素数不 ... 
随机推荐
- HTML<head></head>中标签的含义
			我们都知道,HTML的标签可以分为很多种,head 里面的我们称为元信息类标签,诸如title.meta.style.link.base.script这些,他们用来描述文档的一些基本信息. 1. ti ... 
- INUX下抓取当前登录用户登录密码的工具:mimipenguin
			前有Mimikatz,今有mimipenguin,近日国外安全研究员huntergregal发布了工具mimipenguin,一款Linux下的密码抓取神器,可以说弥补了Linux下密码抓取的空缺. ... 
- luffy 那点事
			1 虚拟环境创建 2 后台:Django项目创建 3 后台配置 4 数据库配置 5 user模块User表 6 前台 7 前台配置 8 前端主页 9 后端主页模块设计 10 xadmin 后台管理 1 ... 
- jquery 操作单选框,复选框,下拉列表实现代码
			1.复选框全选操作:其实说到底就是对Jquery 选择器的运用,点我查看Jquery选择器 html代码: 复制代码代码如下: <form> 您爱好的运动是: <input type ... 
- centos 虚拟机安装调试
			service network restart reboot yum update -y cd /etccd sysconfigcd network-scripts[root@u0mo5 networ ... 
- 吴裕雄--天生自然JAVAIO操作学习笔记:压缩流与回退流
			import java.io.File ; import java.io.FileInputStream ; import java.io.InputStream ; import java.util ... 
- OO第三次博客作业(第三单元总结)
			(1)梳理JML语言的理论基础.应用工具链情况 Java 建模语言(JML)将注释添加到 Java 代码中,这样我们就可以确定方法所执行的内容,而不必说明它们如何做到这一点.有了 JML,我们就可以描 ... 
- 对S7通信的连接的理解以及对比CAN通信协议来理解PLC通讯
			对S7通信的连接的理解以及对比CAN通信协议来理解PLC通讯. 对功能块 SFB12 和 SFB13 的R_ID参数的理解 ? 对于同一个数据包.发送方与接收方的R_ID应该相同. 用下图解释 双向连 ... 
- P1090 危险品装箱
			1090 危险品装箱 (25分) 集装箱运输货物时,我们必须特别小心,不能把不相容的货物装在一只箱子里.比如氧化剂绝对不能跟易燃液体同箱,否则很容易造成爆炸. 本题给定一张不相容物品的清单,需要你 ... 
- 编程题目:求幂 (python)
			数值的整数次方 效率0(lgn) 这个求幂函数无论 基数 或 次方 为 正数或者为负数都是成立的.只是他们都为整数罢了. 注意了哦,这个代码必须要用python3才能运行正确,因为python3的 整 ... 
