bzoj4033(树上染色)
Input
Output
Sample Input
5 2
1 2 3
1 5 1
2 3 1
2 4 2
Sample Output
17
【样例解释】
将点1,2染黑就能获得最大收益。
一道河北省选题,树形dp,写代码的时候注释都写上去了,F[I][J]表示以i为根,选了j个黑点的最大值。
#include<cstdio>
#include<algorithm>
#include<iostream>
#include<cmath>
#include<cstring>
using namespace std; typedef long long LL;
const LL INF=1e16+;
const int NN=; int n,k;
int size[NN];
int cnt=,head[NN],next[NN*],rea[NN*],val[NN*];
LL f[NN][NN]; void add(int u,int v,int fee)
{
cnt++;
next[cnt]=head[u];
head[u]=cnt;
rea[cnt]=v;
val[cnt]=fee;
}
void dfs(int u,int fa)
{
f[u][]=f[u][]=;//没什么好说的吧。
size[u]=;
for (int i=head[u];i!=-;i=next[i])
{
int v=rea[i],fee=val[i];
if (v==fa) continue;
dfs(v,u);
size[u]+=size[v];
for (int j=size[u];j>=;j--)
{
LL ans=;
for (int t=;t<=size[v]&&t<=j;t++)//防止越界
{
ans=(long long)(t*(k-t))+(long long)((size[v]-t)*(n-k-(size[v]-t)));//和所有的黑点,白点的连边(n-k)为所有的白点。
ans*=fee;//乘上这条边。
ans+=f[v][t];//加上这棵子树上的贡献。
f[u][j]=max(f[u][j],f[u][j-t]+ans);//因为从大到小,所以如果,u的左边子树不够支持j-t的话,绝对是没有值的。
}
}
}
}
void init()
{
memset(head,-,sizeof(head));
int x,y,z;
scanf("%d%d",&n,&k);
for (int i=;i<n;i++)
{
scanf("%d%d%d",&x,&y,&z);
add(x,y,z),add(y,x,z);
}
for (int i=;i<=n;i++)
for (int j=;j<=n;j++)
f[i][j]=-INF;
dfs(,-);
printf("%lld\n",f[][k]);//1为根节点。
}
int main()
{
init();
}
bzoj4033(树上染色)的更多相关文章
- bzoj4033 树上染色
Description 有一棵点数为N的树,树边有边权.给你一个在0~N之内的正整数K,你要在这棵树中选择K个点,将其染成黑色,并 将其他的N-K个点染成白色.将所有点染色后,你会获得黑点两两之间的距 ...
- BZOJ4033 HAOI2015 树上染色 【树上背包】
BZOJ4033 HAOI2015 树上染色 Description 有一棵点数为N的树,树边有边权.给你一个在0~N之内的正整数K,你要在这棵树中选择K个点,将其染成黑色,并将其他的N-K个点染成白 ...
- [BZOJ4033][HAOI2015]树上染色(树形DP)
4033: [HAOI2015]树上染色 Time Limit: 10 Sec Memory Limit: 256 MBSubmit: 2437 Solved: 1034[Submit][Stat ...
- 【BZOJ4033】[HAOI2015]树上染色 树形DP
[BZOJ4033][HAOI2015]树上染色 Description 有一棵点数为N的树,树边有边权.给你一个在0~N之内的正整数K,你要在这棵树中选择K个点,将其染成黑色,并将其他的N-K个点染 ...
- [bzoj4033][HAOI2015]树上染色_树形dp
树上染色 bzoj-4033 HAOI-2015 题目大意:给定一棵n个点的树,让你在其中选出k个作为黑点,其余的是白点,收益为任意两个同色点之间距离的和.求最大收益. 注释:$1\le n\le 2 ...
- BZOJ4033: [HAOI2015]树上染色(树形DP)
4033: [HAOI2015]树上染色 Time Limit: 10 Sec Memory Limit: 256 MBSubmit: 3461 Solved: 1473[Submit][Stat ...
- bzoj 4033: [HAOI2015]树上染色 [树形DP]
4033: [HAOI2015]树上染色 我写的可是\(O(n^2)\)的树形背包! 注意j倒着枚举,而k要正着枚举,因为k可能从0开始,会使用自己更新一次 #include <iostream ...
- 洛谷 P3177 树上染色 解题报告
P3177 [HAOI2015]树上染色 题目描述 有一棵点数为\(N\)的树,树边有边权.给你一个在\(0\) ~ \(N\)之内的正整数\(K\),你要在这棵树中选择\(K\)个点,将其染成黑色, ...
- 【BZOJ】4033: [HAOI2015]树上染色 树上背包
[题目]#2124. 「HAOI2015」树上染色 [题意]给定n个点的带边权树,要求将k个点染成黑色,使得 [ 黑点的两两距离和+白点的两两距离和 ] 最大.n<=2000. [算法]树上背包 ...
随机推荐
- webstom,zencoding,windows快捷键
1.webstorm快捷键: IntelliJ-Idea 的快捷键 Ctrl+/ 或 Ctrl+Shift+/ 注释(// 或者/*…*/ ) Shift+F6 重构-重命名 Ctrl+X 删除行 C ...
- Linux安装解压缩版jdk
#解压到指定目录 tar zxvf ./jdk-7-Linux-i586.tar.gz -C /usr/lib/jvm 配置环境变量 #vi /etc/profile 编辑文件,在最后添加: ex ...
- 大型网站的 HTTPS 实践(三)——基于协议和配置的优化
详见:http://blog.yemou.net/article/query/info/tytfjhfascvhzxcyt389 1 前言 上文讲到 HTTPS 对用户访问速度的影响. 本文就为大家介 ...
- JavaWeb程序连接SQLserver数据库
声明:一直以来都以为javaweb程序连接数据库是一个很高大上很难的问题,结果今天学习了一下,不到两个小时就解决了,所以总结一篇博客. JavaWeb程序连接SQLserver数据库分为一下步骤: 1 ...
- IBM与麻省理工学院联合建立AI实验室 承诺投资2.4亿美元
IBM和麻省理工学院将通过今天宣布的一个新的联合实验室共同努力,对人工智能进行广泛的研究.麻省理工学院IBM沃森AI实验室将重点关注四个研究支柱:开发AI算法,使用物理学来创建AI计算的新硬 ...
- linq之延迟加载和即时加载+标准查询运算符
延迟加载 Linq查询的执行结果是IEnumerable<T>类型,而对IEnumerable<T>,在内部,C#通过yield关键字实现迭代器达到延迟加载的目的.从而使Lin ...
- 如何在sublime+chrome中调试php代码?
1.搭建php本地运行环境具体点击如何使用phpstudy本地搭建多站点(每个站点对应不同的端口) 2.下载php_xdebug.dll, [5.3版以上的php下载地址]http://pecl.ph ...
- GUI(JMenuBar+JMenu+JMenuItem)
public class WindowMenu extends JFrame { JMenuBar menubar; JMenu menu,subMenu; JMenuItem item1,item2 ...
- 201521123039 《java程序设计》第四周学习总结
1. 本周学习总结 总结: 1.提到类的继承就会想到继承层次的问题,一般我们都将子类和父类共同的特征放到父类中,将具有特殊用途的方法放在子类中,这样可以有效避免代码冗余. 2.覆盖与重载是不同的概念, ...
- Python笔记2.1
所有类型如下图: 一 基础数据类型 1)数字类型 复制代码 >>> 2/2+2*2 5.0 >>> (50-5*6)/4 5.0 >>> 8/5 ...