[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 ...
随机推荐
- Flex中容器的完全隐藏
在html中,但我们设置某个dom元素的display属性为none时,dom元素不可见且其占用空间从dom树上隐藏,而在Flex中,但我们把某个组件的visible属性visible设为false的 ...
- QCon2016 上海会议汇总(2) - 团队管理
QCon 2016上海日程:http://2016.qconshanghai.com/schedule <当你的团队还支撑不起梦想时> - 链尚网技术合伙人 杨荣伟 Figo讲述了如何训练 ...
- 【leetcode刷题笔记】Valid Sudoku
Determine if a Sudoku is valid, according to: Sudoku Puzzles - The Rules. The Sudoku board could be ...
- hiho一下 第二十九周 最小生成树三·堆优化的Prim算法【14年寒假弄了好长时间没搞懂的prim优化:prim算法+堆优化 】
题目1 : 最小生成树三·堆优化的Prim算法 时间限制:10000ms 单点时限:1000ms 内存限制:256MB 描述 回到两个星期之前,在成功的使用Kruscal算法解决了问题之后,小Ho产生 ...
- Python 模块EasyGui
1.msgBox msgbox(msg='(Your message goes here)', title=' ', ok_button='OK', image=None, root=None) ms ...
- jQuery cookie 实现记住用户名和密码功能
jQuery cookie 实现记住用户名和密码功能 HTML代码 <div class="wrap"> <div class="line-top&qu ...
- 消息队列(Message Queue)基本概念
背景 之前做日志收集模块时,用到flume.另外也有的方案,集成kafaka来提升系统可扩展性,其中涉及到消息队列当时自己并不清楚为什么要使用消息队列.而在我自己提出的原始日志采集方案中不适用消息队列 ...
- JS获取ListBox所有项
JS代码: var listbox = document.getElementById("<%=lbCustom.ClientID %>"); var values = ...
- Python中如何从数据库把数据导入excel中
import pymysql,xlwt #1.连接mysql #2.执行sql语句 #3.获取到sql执行结果 #4.写入excel def conn_mysql(sql): conn = pymys ...
- 了解fiddler:实现简单的抓包测试
fiddler是一款轻型的抓包软件 本文介绍几个常用的功能:(相信图片更直观点,上图片,右键在新标签页中打开,查看高清大图) 通过composer,我们可以修改http头部信息,修改post(),ge ...