hdu 5534
题目描述:n个节点度数之和为n-2,每个节点预分配了1个度,任意分配度数是否有可能形成树?
从1到n节点,考虑树的形状,考虑分配给当前节点i的度数,并且注意到当前节点的度数不会影响其他节点(之前或者之后),因为之前先给每个节点分配1度的度数,然后n个节点度数之和确定,从1到n考虑,每个节点都有分配到0到n-2的度数的可能,还有n个节点的度数之和的为n-2的限制(某个节点分配到0个度,说明是叶子)。
求在y1+y2+.....+y[n-2]=(n-2)的条件下,F[y1]+F[y2]+.....F[y[n-2]]的最大收益;
其中xi代表i度的有几个,f[i]代表i度的收益;
将n-2个度分为n份,可以想象一条长度为n-2的线段,切成n段,获得的收益为F[len],求收益最大?每段的长度的取值范围为0到n-2,那么可以这样考虑,最优情况下,一厘米长度的有几个?2厘米长度的有几个?3厘米长度的有几个?......n-2厘米长度的有几个?
数学形式为在x1+x2+....+x[n-2]=(n-2)的条件下,求x1*f[1]+x2*f[x2]+...x[n-2]*f[n-2]的最大值?
其次还需处理线段长度合并时权值的变化,消除的思想。
#include <iostream>
#include <cstdio>
#include <cstring>
#include <cstdlib>
#include <cstring>
#include <algorithm>
#include <cmath>
#define maxn 2200
#define inf 0x3f3f3f3f3f3f
using namespace std;
int T,n,f[maxn]; //f代表石子的重量
int d[maxn];
int f1;
void init()
{
for(int i=;i<maxn;i++)
d[i]=-inf;
d[]=;
}
void solve() //可以理解成切线段
{
int ans=n*f1;
for(int i=;i<=n-;i++) //度数为i的有多少个
{
for(int j=i;j<=n-;j++)
{
if(d[j-i]+f[i] > d[j] )
{
d[j]=d[j-i]+f[i];
}
}
}
ans+=d[n-];
printf("%d\n",ans);
} int main()
{
// freopen("test.txt","r",stdin);
scanf("%d",&T);
while(T--)
{
scanf("%d",&n);
scanf("%d",&f1);
for(int i=;i<=n-;i++)
{
scanf("%d",&f[i]);
f[i]-=f1;
}
init();
solve();
}
return ;
}
hdu 5534的更多相关文章
- H - Partial Tree HDU - 5534 (背包)
题目链接: H - Partial Tree HDU - 5534 题目大意:首先是T组测试样例,然后n个点,然后给你度数分别为(1~n-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= ...
- ACM学习历程—HDU 5534 Partial Tree(动态规划)
题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=5534 题目大意是给了n个结点,让后让构成一个树,假设每个节点的度为r1, r2, ...rn,求f(x ...
- hdu 5534 Partial Tree(完全背包)
题目链接:http://acm.split.hdu.edu.cn/showproblem.php?pid=5534 题解:这题一看有点像树形dp但是树形dp显然没什么思路.然后由于这里的约束几乎没有就 ...
- 2015ICPC chanchun HDU 5534 (树形题转换完全背包)
题目:http://acm.hdu.edu.cn/showproblem.php?pid=5534 题意:给你n个点,让你加上n-1条边使他变成一棵树,题目首先给你a[1] a[2].....a[n- ...
- HDU 5534 Partial Tree 完全背包
一棵树一共有2*(n-1)度,现在的任务就是将这些度分配到n个节点,使这n个节点的权值和最大. 思路:因为这是一棵树,所以每个节点的度数都是大于1的,所以事先给每个节点分配一度,答案 ans=f[1] ...
- 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 ...
- 2015长春 HDU 5534 Partial Tree
题意:有n个结点,n-1条边,现在要把这n个结点连成一棵树,给定了f(i),表示度为i的结点的价值是f(i).现在问如何连能够使得Σf(i)的值最大. 思路:每个点至少一个度,所以可分配的度数为n-2 ...
随机推荐
- 把disable maven nature后的项目,恢复菜单呈现出来(Convert to Maven Project)
把disable maven nature后的项目,恢复菜单呈现出来(Convert to Maven Project) 有的时候需求把disable maven nature后的项目,再转换为mav ...
- 亚瑟王(bzoj 4008)
Description 小 K 不慎被 LL 邪教洗脑了,洗脑程度深到他甚至想要从亚瑟王邪教中脱坑. 他决定,在脱坑之前,最后再来打一盘亚瑟王.既然是最后一战,就一定要打得漂 亮.众所周知,亚瑟王是一 ...
- [NOIP2000] 提高组 洛谷P1017 进制转换
题目描述 我们可以用这样的方式来表示一个十进制数: 将每个阿拉伯数字乘以一个以该数字所处位置的(值减1)为指数,以10为底数的幂之和的形式.例如:123可表示为 1*10^2+2*10^1+3*10^ ...
- msp430项目编程02
msp430中项目---液晶1602显示 1.液晶1602工作原理 2.电路原理说明 3.代码(静态显示) 4.代码(动态显示) 5.项目总结 msp430项目编程 msp430入门学习
- python学习之-- redis模块基本介绍
数据缓存系统: 1:mongodb:是直接持久化,直接存储于硬盘的缓存系统 2:redis: 半持久化,存储于内存和硬盘 3:memcache:数据只能存储在内存里的缓存系统关于memcache 学习 ...
- CodeForces 599B Spongebob and Joke
简单题. #include<cstdio> #include<cstring> #include<cmath> #include<algorithm> ...
- Codeforces 920E(补图BFS)
题意: n(n<=200000)个点的完全图删去了m(m<=200000)条边,求剩下图的连通分量. 分析: 将未访问过的点用一个链表串起来 仍旧进行BFS,每次BFS扩展一个点u的时候, ...
- json转xml报[java.lang.NoClassDefFoundError: nu/xom/Serializer]
原文:http://blog.csdn.net/figo645/article/details/48413571 开始学习JSON了,那么很自然的,我开始要熟悉一些基本的JSON语法 {}代表对象,[ ...
- HDU 5301 Buildings(2015多校第二场)
Buildings Time Limit: 4000/2000 MS (Java/Others) Memory Limit: 131072/131072 K (Java/Others) Tota ...
- Java注释中的@deprecated与源代码中的@Deprecated
用 @Deprecated注释的程序元素,不鼓励程序员使用这样的元素,通常是因为它很危险或存在更好的选择.在使用不被赞成的程序元素或在不被赞成的代码中执行重写时,编译器会发出警告. 其次,请注意标题, ...