HDU-5534 Partial Tree 完全背包 设定初始选择
题目链接:https://cn.vjudge.net/problem/HDU-5534
题意
放学路上看到n个节点,突然想把这几个节点连成一颗树。
树上每个节点有一个清凉度,清凉度是一个关于节点度的函数。
问能够组成树的最大清凉度是多少。
思路
看到题目瞬间考虑一共有n-1条边,各节点的度之和是2n-2。
那么猜测每个节点上分配度数是一个完全背包。
画了两个例子结果是没问题。
注意可能有的节点将不被分配度数,所以要预分配一个度
dp[0]=n*val[1]
这样做的原理是每个节点必然可以分配到一个度,而每次更新度数时必然可以替换掉一个初始度数。
所以最终的答案应该是每个节点都有度数。
- 预分配dp[0]=n*val[1];并且因为必须从0开始(填满背包),所以其他dp[i]=-INF保证取不了
- 注意预分配后,每个节点的度变为1,所以再更新节点时把节点代价减1,背包大小减n
提交过程
AC | 一开始没有初始分配度数,最后看了题解才懂得 |
代码
#include <cstdio>
#include <cstring>
#include <algorithm>
using namespace std;
const int maxn=2015+20, INF=1e8;
int dp[maxn], val[maxn], n;
int main(void){
int T;
scanf("%d", &T);
while (T--){
scanf("%d", &n);
for (int i=1; i<=n-1; i++) scanf("%d", &val[i]);
for (int i=1; i<=n-1; i++) dp[i]=-INF;
dp[0]=n*val[1];
for (int i=2; i<=n-1; i++){
for (int j=i-1; j<=n-2; j++) // attend: i-1
dp[j]=max(dp[j], dp[j-i+1]+val[i]-val[1]);
}
printf("%d\n", dp[n-2]);
}
return 0;
}
Time | Memory | Length | Lang | Submitted |
---|---|---|---|---|
62ms | 1228kB | 578 | G++ | 2018-08-21 03:47:13 |
HDU-5534 Partial Tree 完全背包 设定初始选择的更多相关文章
- HDU 5534 Partial Tree 完全背包
一棵树一共有2*(n-1)度,现在的任务就是将这些度分配到n个节点,使这n个节点的权值和最大. 思路:因为这是一棵树,所以每个节点的度数都是大于1的,所以事先给每个节点分配一度,答案 ans=f[1] ...
- HDU 5534 Partial Tree (完全背包变形)
题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=5534 题意: 给你度为1 ~ n - 1节点的权值,让你构造一棵树,使其权值和最大. 思路: 一棵树上 ...
- 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(每种都装的完全背包)
Partial Tree In mathematics, and more specifically in graph theory, a tree is an undirected graph in ...
- 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(完全背包)
题目链接:http://acm.split.hdu.edu.cn/showproblem.php?pid=5534 题解:这题一看有点像树形dp但是树形dp显然没什么思路.然后由于这里的约束几乎没有就 ...
- ACM学习历程—HDU 5534 Partial Tree(动态规划)
题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=5534 题目大意是给了n个结点,让后让构成一个树,假设每个节点的度为r1, r2, ...rn,求f(x ...
- 2015长春 HDU 5534 Partial Tree
题意:有n个结点,n-1条边,现在要把这n个结点连成一棵树,给定了f(i),表示度为i的结点的价值是f(i).现在问如何连能够使得Σf(i)的值最大. 思路:每个点至少一个度,所以可分配的度数为n-2 ...
- HDU 5534 Partial Tree
2015 ACM/ICPC 长春现场赛 H题 完全背包 #include<cstdio> #include<cstring> #include<cmath> #in ...
随机推荐
- 1、Ansible初识简要介绍及安装
1.Ansible简介 1.1 Ansible介绍 Ansible 是一个简单的自动化运维管理工具,基于Python开发,集合了众多运维工具(puppet.cfengine.chef.func.fab ...
- 实战:一、使用mongo做一个注册的小demo
思路:1.使用mongoose 进行 数据库的链接 2.使用Schema来进行传输字段的定义 3.安装koa-router进行数据处理4.安装koa-bodyparser 进行post数据交互5.解决 ...
- soapui测试接口使用步骤
1.新建项目 2. 定义接口 url输入接口 3.新建测试集 选择项目,右键 4.在测试集下新建测试用例 5.在测试步骤中导入要测试的请求 6.run
- BA-Delta知识点
问题: DSM-RTR的网络负载能力是怎样的?每条总线带32个模块吗?MS/TP总线上的模块需要拨地址码吗?最大可以承载多少个点? 答:理论值是30,最佳性能是21个,一般情况25-28个 linkn ...
- [Design]Adobe CS6 2%错误问题
错误描述:FATAL: Payload '{3F023875-4A52-4605-9DB6-A88D4A813E8D} Camera Profiles Installer 6.0.98.0' info ...
- iOS中的crash防护(二)KVC造成的crash
接上篇< iOS中的crash防护(一)unrecognized selector sent to instance> 我们攻克了找不到方法实现的crash,这一篇我这里主要分析一下在 ...
- Tom和Jerry来了,Tom和Jerry走了——北漂18年(38)
上次讲到跟我同一时候入职的女销售走了. 回忆起来,她的问题多半是技巧足够,脑子不足够,走了之后再没联系.不久之后,在老板的要求之下.LilyG又招聘了两位男销售,英文名字非常登对一个叫Tom,一个叫J ...
- POJ训练计划3422_Kaka's Matrix Travels(网络流/费用流)
解题报告 题目传送门 题意: 从n×n的矩阵的左上角走到右下角,每次仅仅能向右和向下走,走到一个格子上加上格子的数,能够走k次.问最大的和是多少. 思路: 建图:每一个格子掰成两个点,分别叫" ...
- This Activity already has an action bar supplied by the window decor
问题描写叙述:继承自AppCompatActivity,使用Toolbar替代ActionBar的时候.出现错误 错误信息: 2.Caused by: java.lang.IllegalStateEx ...
- gdbserver 远程调试问题:设置文件和so搜索路径
编写一个必定crash 的程序 #include <stdio.h> void crash(){ char *a=0; *a=0; } int main() { printf(" ...