[hdu4960]Another OCD Patient(区间dp)
题意:给出n个数,把这n个数合成一个对称的集合。每个数只能合并一次。
解题关键:区间dp,dp[l][r]表示l-r区间内满足条件的最大值。vi是大于0的,所以可以直接双指针确定。
转移方程:$dp[l][r] = \min (val(r - l + 1),val(r - i + 1) + val(j - l + 1) + dp[j + 1][i - 1])$
#include<bits/stdc++.h>
using namespace std;
typedef long long ll;
int dp[][],v[],a[];
ll sum[];
ll dfs(ll L,ll R){
if(L>=R) return ;
if(~dp[L][R]) return dp[L][R];
ll ans=a[R-L+],l=L,r=R;
while(l<r){
ll sum1=sum[l]-sum[L-],sum2=sum[R]-sum[r-];
if(sum1==sum2){
ans=min(ans,dfs(l+,r-)+a[l-L+]+a[R-r+]);
l++,r--;
}else if(sum1<sum2) l++;
else r--;
}
return dp[L][R]=ans;
}
int main(){
ll n;
while(~scanf("%lld",&n)&&n){
for(int i=;i<=n;i++) scanf("%d",v+i),sum[i]=sum[i-]+v[i];
for(int i=;i<=n;i++) scanf("%d",a+i);
memset(dp,-,sizeof dp);
ll ans=dfs(,n);
printf("%lld\n",ans);
}
return ;
}
[hdu4960]Another OCD Patient(区间dp)的更多相关文章
- HDU 4960  Another OCD Patient 简单DP
		思路: 因为是对称的,所以如果两段是对称的,那么一段的前缀和一定等于另一段的后缀和.根据这个性质,我们可以预处理出这个数列的对称点对.然后最后一个对称段是从哪里开始的,做n^2的DP就可以了. 代码: ... 
- 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(dp)
		Another OCD Patient Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 131072/131072 K (Java/Ot ... 
- [dp]HDOJ4960 	Another OCD Patient
		题意: 给一个n, 第二行给n堆的价值v[i], 第三行给a[i]. a[i]表示把i堆合在一起需要的花费. 求把n堆变成类似回文的 需要的最小花费. 思路: ①记忆化搜索 比较好理解... dp[ ... 
- 【HDU4960】Another OCD Patient
		题意 给出一个长度为n的整数序列.可以将一段连续的序列进行合并.合并的长度不同代价不同.问付出最少多少代价可以将这个序列变成一个对称的序列.n<=5000 分析 一看题感觉是个dp很好写啊.f[ ... 
- HDU 4960 Another OCD Patient(记忆化搜索)
		HDU 4960 Another OCD Patient pid=4960" target="_blank" style="">题目链接 记忆化 ... 
- hdu 4960 Another OCD Patient (最短路 解法
		http://acm.hdu.edu.cn/showproblem.php?pid=4960 2014 Multi-University Training Contest 9 Another OCD ... 
- 【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 ... 
随机推荐
- eclipse 修改 JDK中的src.zip的路径
			http://blog.sina.com.cn/s/blog_54a1bca7010112fb.html http://www.douban.com/note/211369821/ 1.点 “wind ... 
- 用cocos2d-html5做的消除类游戏《英雄爱消除》(4)——游戏结束
			游戏结束界面: 在前面几个教程中,这个界面的创作所需要的知识点基本我们都讲过了,这里就说下用户数据的缓存吧,也是先来看下源码 /** * Power by html5中文网(html5china.co ... 
- 实用篇:说说我在JavaScript项目中使用的工具类
			在JavaScript的开发中,我们都会写一些工具类来帮我们简化一些业务操作的逻辑,一下就貼几个我在项目开发过程中常用的工具类.表达能力有限,各位看官还是看源码吧. 一.日期处理工具类. /** * ... 
- frontend-tools
			收集整理好用的前端开发利器(Collect good front-end development tools ) 1.w3cplus前端工具 2.jsfiddle在线JS代码调试工具 3.w3cfun ... 
- Linux mint
			最近一直在配置vim, 今天终于配的差不多了,拿出来晒晒,^_^ . 附上一段Linux Mint 的简介(来自Wiki). Linux Mint是一种基于Ubuntu开发出的Linux操作系统.由L ... 
- var妙用
			var广泛使用其实也有用的.比如在一些不太确定类型的地方 (比如要区分int/uint/long/double的时候),用泛型太牛刀而不用又觉得不灵活的时候,其实是比较推荐var的比如设计某种类的时候 ... 
- rail模型
			rail是一种以用户为中心的性能模型,又google提出,其主要目标是让用户满意,主要分为response animation idle load四个部分 response 输入延迟时间小于100毫秒 ... 
- 第二十三篇、IO多路复用 二
			基于IO多路复用实现socket的连接 下面流程:1.先创建列表,让自己的socket对象传入,然后遍历select第一个参数2.客户端连接,那么客户端socket就传入到了列表里面,3.遍历,接收客 ... 
- python内置方法补充bin
			bin(x) 英文说明:Convert an integer number to a binary string. The result is a valid Python expression. I ... 
- CustomizaitonSpec Clone_VM
			克隆虚拟机可以加上CustomizationSpec来自动配置好:IP地址.DNS.Domain等信息 1.可以利用PyVmimo中的vim模块在python中完全自定义CustomizationSp ... 
