hdu 5534 Partial Tree 2015长春区域赛 dp 脑洞
来源:互联网 发布:python random.choice 编辑:程序博客网 时间:2024/04/29 19:18
题目
题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=5534
题目来源:2015长春区域赛第五题,银牌题。
简要题意:给定
f 函数,构造一颗树,令它的每个节点的度数的f 函数值之和最大。数据范围:
1⩽T⩽2015;2⩽n⩽2015;0⩽f(i)⩽10000
题解
这题首先一个很直观的想法就是
dp[i][j] 是i 个节点j 条边的最大值,然后枚举当前节点的度数。可是复杂度是立方的,明显通不过这道题。
这题需要脑洞,比较难理解,也是很不错的一道题。
关键在于换个东西来
dp ,先将所有节点变为1 度,然后不断增加一些节点的度数。由于节点数和度数和最后是确定的,每个节点也肯定有度数,最终必然能够构成一棵树。
最终的度数增量为
2(n−1)−n=n−2 ,于是就变成了容量n−2 的完全背包了。思路非常巧妙,脑洞非常大。
实现
中间的代价可能是负的,需要初始化为
−∞ 可以写成二维的,也可以写成一维的。
代码
#include <iostream>#include <cstdio>#include <cmath>#include <algorithm>#include <cstring>#include <stack>#include <queue>#include <string>#include <vector>#include <set>#include <map>#define pb push_back#define mp make_pair#define all(x) (x).begin(),(x).end()#define sz(x) ((int)(x).size())#define fi first#define se secondusing namespace std;typedef long long LL;typedef vector<int> VI;typedef pair<int,int> PII;LL powmod(LL a,LL b, LL MOD) {LL res=1;a%=MOD;for(;b;b>>=1){if(b&1)res=res*a%MOD;a=a*a%MOD;}return res;}// headconst LL MOD = 1e9+7;const int N = 2222;const int INF = -0x3f3f3f3f;int f[N];int dp[N];int main () { int t; scanf("%d", &t); while (t--) { int n; scanf("%d",&n); for (int i = 1; i < n; i++) scanf("%d",f+i), dp[i] = INF; for (int i = 1; i <= n; i++) { int temp = f[i]-f[1]; for (int j = i-1; j <= n-2; j++) { dp[j] = max(dp[j], dp[j-i+1]+temp); } } printf("%d\n", n*f[1] + dp[n-2]); } return 0;}
0 0
- hdu 5534 Partial Tree 2015长春区域赛 dp 脑洞
- HDU 5534 (ACM 2015 长春) Partial Tree [基础DP]
- HDU 5534 【2015长春现场赛 H】 Partial Tree
- HDU-5534-Partial Tree【2015长春赛区】【完全背包】
- HDU-5534-Partial Tree【2015长春赛区】【完全背包】
- HDU 5534 Partial Tree [DP]
- HDU 5534 Partial Tree (2015长春站H题&&完全背包)
- HDU 5534 Partial Tree(dp)
- HDU 5534 Partial Tree(dp优化)
- HDU 5534 Partial Tree(dp 背包)
- hdu 5534 Partial Tree(dp+降唯)
- hdu 5534 Partial Tree 背包DP
- hdu 5534 Partial Tree
- HDU 5534 Partial Tree
- hdu 5534 Partial Tree
- HDU-5534-Partial Tree
- HDU 5534 Partial Tree(考虑树性质的dp)
- 【HDU5534 2015长春赛区H】【树上DP转完全背包】Partial Tree 不同度不同权对应最大树权
- Android之AlertDialog详解
- extjs简单左边树形菜单布局
- 简单工厂Pk工厂方法
- OC中的runtime运行时
- 数据库复习笔记
- hdu 5534 Partial Tree 2015长春区域赛 dp 脑洞
- Android动画学习笔记-Android Animation
- iOS导航栏 如果只想改变单一自控制导航栏按钮 标题颜色 请进
- 基于ZooKeeper的Dubbo注册中心
- 如何使用javadoc
- App installation failed A valid provisioning profile for this executable was not found.
- C++的数组和指针
- Android 待机功能流程分析
- iOS上传错误 ERROR ITMS-90049 立即解决方法