Partial Tree
Partial Tree
题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=5534
完全背包
做这题前去学习了下完全背包,觉得这个优化简直神技!(以前都是用01背包做的,数据水的话可以过= =)
for(int i=;i<=n;++i)
for(int j=i;j<=V;++j)
dp[j]=max(dp[j],dp[j-i]+v[i]);
完全背包 时间复杂度O(VE)
我们回到这道题,显然整棵树的总的度为2n-2,相当于将2n-2个度分配到n个结点中去;
为了保证没有一个结点的度为0,现将每个结点的度预设为1;
于是问题就相当于往容量为n-2的背包中放东西,东西的代价度,权值为f(x),也就是完全背包的变形了。
设状态:dp[j]表示度为i时的最大值
状态转移方程:dp[j]=max(dp[j],dp[j-i]+f[i+1]-f[1])
代码如下:
#include<cstdio>
#include<cstring>
#define Max(x,y) (x>y?x:y)
#define N 2020
using namespace std;
typedef long long LL;
const LL INF=(LL)1e15;
LL T,n,dp[*N],f[N],lmt,ans;//dp[i]为存放i代价的最大价值
int main(void){
scanf("%I64d",&T);
while(T--){
scanf("%I64d",&n);
lmt=n-;
for(LL i=;i<=lmt;++i)
dp[i]=-INF;
for(LL i=;i<n;++i)
scanf("%I64d",&f[i]);
for(LL i=;i<n-;++i)
for(LL j=i;j<=lmt;++j)
dp[j]=Max(dp[j],dp[j-i]+f[i+]-f[]);
ans=dp[lmt]+n*f[];
printf("%I64d\n",ans);
}
}
Partial Tree的更多相关文章
- hdu 5534 (完全背包) Partial Tree
题目:这里 题意: 感觉并不能表达清楚题意,所以 Problem Description In mathematics, and more specifically in graph theory, ...
- 2015ACM/ICPC亚洲区长春站 H hdu 5534 Partial Tree
Partial Tree Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 262144/262144 K (Java/Others)To ...
- hdu 5534 Partial Tree 背包DP
Partial Tree Time Limit: 20 Sec Memory Limit: 256 MB 题目连接 http://acm.hdu.edu.cn/showproblem.php?pid= ...
- HDU 5534 Partial Tree 完全背包
一棵树一共有2*(n-1)度,现在的任务就是将这些度分配到n个节点,使这n个节点的权值和最大. 思路:因为这是一棵树,所以每个节点的度数都是大于1的,所以事先给每个节点分配一度,答案 ans=f[1] ...
- H - Partial Tree HDU - 5534 (背包)
题目链接: H - Partial Tree HDU - 5534 题目大意:首先是T组测试样例,然后n个点,然后给你度数分别为(1~n-1)对应的不同的权值,然后问你在这些点形成树的前提下的所能形 ...
- Partial Tree(DP)
Partial Tree http://acm.hdu.edu.cn/showproblem.php?pid=5534 Time Limit: / MS (Java/Others) Memory Li ...
- HDU - 5534 Partial Tree(每种都装的完全背包)
Partial Tree In mathematics, and more specifically in graph theory, a tree is an undirected graph in ...
- HDU 5534/ 2015长春区域H.Partial Tree DP
Partial Tree Problem Description In mathematics, and more specifically in graph theory, a tree is an ...
- hdu5534 Partial Tree
Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 262144/262144 K (Java/Others) Total Submissi ...
随机推荐
- C语言之冒泡排序
冒泡排序: 1). 简介 其实就是把一个数组的元素,按照从小到大(从大到小)得顺序,重新排列起来,这种排序就叫冒泡排序 例: int nums[5] = {5,4,3,2,1}; //经过排序后 下标 ...
- C语言之分支结构 if(一)
一 程序的三种基本结构 顺序结构:程序从上往下依次执行,这个叫顺序结构 分支结构:有选择的执行或者不执行某段代码 循环结构:重复的执行某段代码 二 分支结构之if 最简单的俩种用法 (tips: if ...
- C语言之自增和自减运算符
一 自增和自减 自增(++):就是给自己的值再加1 自减(--):就是给自己的值减1 tips: ++(--)可以放在前面,也可以放在后面,效果都是一样,都是会给自身+1(-1) 前缀++(--):会 ...
- labview 调用 matlab script的神坑! Error 1050 occurred at LabVIEW
显示变量没有被定义,原因是clear 关键字的问题,去掉即可!!! 未找到 文件路径,定位: 文件路径中不能有中文路径
- Mocha的单元测试实战
Mocha Mocha是一个测试框架,为JS应用添加测试.使用见:mochajs. Mocha结合Nodejs实战 ontstair.js 这里我们使用自定义模块:ontstair.js,代码如下. ...
- 办理西蒙弗雷泽大学(本科)学历认证『微信171922772』SFU学位证成绩单使馆认证Simon Fraser University
办理西蒙弗雷泽大学(本科)学历认证『微信171922772』SFU学位证成绩单使馆认证Simon Fraser University Q.微信:171922772办理教育部国外学历学位认证海外大学毕业 ...
- 使用vim配置方案spf13中碰到的一些问题
目的:达到我自己自定义安装插件的目的 安装YCM(YouCompleteMe)自动补全神器之前的准备 先安装编译环境: 1 2 sudo apt-get install build-essential ...
- codevs1028花店橱窗布置(费用流)
这几天刚学了费用流,找到了这道题来练一练手. 题目: 题目描述 Description 假设以最美观的方式布置花店的橱窗,有F束花,V个花瓶,我们用美学值(一个整数)表示每束花放入每个花瓶所产生的美学 ...
- sql 时间格式化
sql server2000中使用convert来取得datetime数据类型样式(全) 日期数据格式的处理,两个示例: CONVERT(varchar(16), 时间一, 20) 结果:2007-0 ...
- OBIEE 缓存机制
1,EM下开关缓存和rpd中高速缓存是一件事,就是nqserver的缓存, 由nqsconfig.ini中配置决定cache是否开启. 当然rpd里面还需要设置,具体的表是否要缓存. 这部分可以看这篇 ...