[HAOI2015]树上染色 树状背包 dp
#4033. [HAOI2015]树上染色
Description
Input
Output
Sample Input
5 2
1 2 3
1 5 1
2 3 1
2 4 2
Sample Output
17
【样例解释】
将点1,2染黑就能获得最大收益。
Hint
2017.9.12新加数据一组 By GXZlegend
Source
鸣谢bhiaibogf提供
SolutionSolution

#include<ctime>
#include<cstdio>
#include<cstdlib>
#define min(a,b) (a<b?a:b)
#define max(a,b) (a>b?a:b)
const int N=+;
const int M=N<<;
typedef long long ll;
int tot,to[M],val[M],next[M],head[N],size[N];bool vis[N];
int n,K;ll f[N][N];
inline void add(int x,int y,int z){
to[++tot]=y;val[tot]=z;next[tot]=head[x];head[x]=tot;
}
void dp(int x){
int y,w,p,q;
size[x]=;vis[x]=;
for(int i=head[x];i;i=next[i]){
if(vis[y=to[i]]) continue;
dp(y);
w=val[i];
p=min(size[x],K);
q=min(size[y],K);//常数优化
for(int j=p;~j;j--){
for(int k=q;~k;k--){
ll tv=1LL*(k*(K-k)+(n-size[y]-K+k)*(size[y]-k))*w;
f[x][j+k]=max(f[x][j+k],f[x][j]+f[y][k]+tv);
}
}
size[x]+=size[y];//常数优化
}
}
int main(){
srand(time());srand(rand());
scanf("%d%d",&n,&K);K=min(K,n-K);
for(int i=,x,y,z;i<n;i++) scanf("%d%d%d",&x,&y,&z),add(x,y,z),add(y,x,z);
int root=rand()%n+;//常数优化
dp(root);
printf("%lld",f[root][K]);
return ;
}
参考:
https://acxblog.site/archives/sol-bzoj-4033.html
https://blog.csdn.net/Diogenes_/article/details/81044483
https://www.cnblogs.com/leom10/p/11199602.html
[HAOI2015]树上染色 树状背包 dp的更多相关文章
- [bzoj4034][HAOI2015]树上操作——树状数组+dfs序
Brief Description 您需要设计一种数据结构支持以下操作: 把某个节点 x 的点权增加 a . 把某个节点 x 为根的子树中所有点的点权都增加 a . 询问某个节点 x 到根的路径中所有 ...
- [HAOI2015]树上染色(树形背包)
有一棵点数为 N 的树,树边有边权.给你一个在 0~ N 之内的正整数 K ,你要在这棵树中选择 K个点,将其染成黑色,并将其他 的N-K个点染成白色 . 将所有点染色后,你会获得黑点两两之间的距离加 ...
- 「HAOI2015树上染色」「树形DP」
其实我还不大会树形DP 此题就当练手叭,缕一下思路就好 题目链接 BZOJ4033 题目大意就是给一棵树,对一部分点染成黑色,剩下的为白色,问所有同色点距离之和....... 简明扼要的题意,然额我不 ...
- BZOJ4033: [HAOI2015]树上染色(树形DP)
4033: [HAOI2015]树上染色 Time Limit: 10 Sec Memory Limit: 256 MBSubmit: 3461 Solved: 1473[Submit][Stat ...
- 【BZOJ4033】[HAOI2015]树上染色 树形DP
[BZOJ4033][HAOI2015]树上染色 Description 有一棵点数为N的树,树边有边权.给你一个在0~N之内的正整数K,你要在这棵树中选择K个点,将其染成黑色,并将其他的N-K个点染 ...
- BZOJ_4033_[HAOI2015]树上染色_树形DP
BZOJ_4033_[HAOI2015]树上染色_树形DP Description 有一棵点数为N的树,树边有边权.给你一个在0~N之内的正整数K,你要在这棵树中选择K个点,将其染成黑色,并 将其他的 ...
- 洛谷 P3177 [HAOI2015]树上染色 树形DP
洛谷 P3177 [HAOI2015]树上染色 树形DP 题目描述 有一棵点数为 \(n\) 的树,树边有边权.给你一个在 \(0 \sim n\)之内的正整数 \(k\) ,你要在这棵树中选择 \( ...
- bzoj 4033: [HAOI2015]树上染色 [树形DP]
4033: [HAOI2015]树上染色 我写的可是\(O(n^2)\)的树形背包! 注意j倒着枚举,而k要正着枚举,因为k可能从0开始,会使用自己更新一次 #include <iostream ...
- BZOJ4033 HAOI2015 树上染色 【树上背包】
BZOJ4033 HAOI2015 树上染色 Description 有一棵点数为N的树,树边有边权.给你一个在0~N之内的正整数K,你要在这棵树中选择K个点,将其染成黑色,并将其他的N-K个点染成白 ...
随机推荐
- Win8.1下Flash Builder 提示: 找不到所需的Adobe Flash Player调试器版本,解决办法
系统:Win8.1 x64 [解决]安装Flash DeBug最新版本补丁,注意下载对应系统的调试版本 下载地址:http://www.adobe.com/support/flashplayer/do ...
- 百度地图 libBaiduMapSDK_base_v4_2_1.so" is 32-bit instead of 64-bit错误
20191111 集成android sdk,华为手机基本都启动报错,如下: W/System.err: java.security.NoSuchProviderException: no such ...
- TOEFL词汇笔记英语托福英语
conjectural-based on guessing 推测的-给予猜测的 consciously-on purpose 有意识地-有目的地 conserve-retain保存-保存 conspi ...
- 原油petrolaeum石油 Archaic spelling of petroleum
petrolaeum (uncountable) Archaic spelling of petroleum petroleum See also: Petroleum Contents [hide] ...
- SpringBoot加载配置文件(@PropertySource@importSource@Value)
情景描述 最近新搭建了一个项目,从Spring迁到了Springboot,为了兼容Spring加载配置文件的风格,所以还想把PropertyPlaceholderConfigurer放在.xml文件里 ...
- Java JAR包
JAR文件全称 Java Archive File,意为Java档案文件.JAR文件是一种压缩文件,也被成为JAR包. 运行程序时,JVM会自动在内存中解压要用的JAR包. 使用JAR包的优点:1.安 ...
- go语言笔记1
Go语言学习整理 本文基于菜鸟教程,对于自己不明白的点加了点个人注解,对于已明确的点做了删除,可能结构不太清晰,看官们可移步Go语言教程 1 Go语言结构当标识符(包括常量.变量.类型.函数名. ...
- X509IncludeOption 枚举
X509IncludeOption 枚举 指定 X.509 数据应包括 X.509 证书链的哪些内容. EndCertOnly 2 X.509 链信息中仅包括最终证书. ExcludeRoot 1 包 ...
- Mysql【第一课】
- [USACO15DEC]最大流Max Flow(树上差分)
题目描述: Farmer John has installed a new system of N−1N-1N−1 pipes to transport milk between the NNN st ...