其实我还不大会树形DP

此题就当练手叭,缕一下思路就好

题目链接 BZOJ4033

题目大意就是给一棵树,对一部分点染成黑色,剩下的为白色,问所有同色点距离之和。。。。。。。

简明扼要的题意,然额我不会QAQ

大概意思是要,枚举父亲节点分给字节点黑点k的个数,然后

子树内的白点数*树外的白点数*边权+子树内黑点数*子树外黑点数*边权

的最大值即答案

  1. #include <iostream>
  2. #include <algorithm>
  3. #include <cstdio>
  4. #include <vector>
  5. #include <cmath>
  6. #define int long long
  7. using namespace std;
  8.  
  9. int n,kk;
  10. const int maxn=;
  11. int f[maxn][maxn],size[maxn];//f数组即dp,f[i][j]表示当前节点i下放j个黑点时对答案的最大贡献
  12. vector<pair<int,int> >G[maxn];//first表示下一个子节点,second表示边权
  13.  
  14. inline void dfs(int x,int fa){
  15. f[x][]=f[x][]=;//当前一个点也没有,初值为零
  16. int u;//字节点
  17. int ans;
  18. size[x]=;
  19. for(int i=;i<G[x].size();i++){
  20. u=G[x][i].first;//枚举所有孩子
  21. if(u==fa) continue;
  22. dfs(u,x);
  23. size[x]+=size[u];//权值统计
  24. for(int j=size[x];j>=;j--){//要倒着循环
  25. for(int k=;k<=size[u]&&k<=j;k++){//j-k的个数
  26. ans=k*(kk-k)+(size[u]-k)*(n-kk-(size[u]-k));//先加起来
  27. ans*=G[x][i].second;//乘上边权
  28. ans+=f[u][k];//统计答案
  29. f[x][j]=max(f[x][j],f[x][j-k]+ans);//背包
  30. }
  31. }
  32. }
  33. }
  34.  
  35. signed main(){
  36. cin>>n>>kk;
  37. for(int i=;i<=n-;i++){
  38. int x,y,z;
  39. cin>>x>>y>>z;
  40. G[x].push_back(make_pair(y,z));
  41. G[y].push_back(make_pair(x,z));
  42. }//建图
  43. for(int i=;i<=n;i++)
  44. for(int j=;j<=n;j++)
  45. f[i][j]=-0x7ffffffffffffff;//因为要取max,初始化为极小值
  46. dfs(,);
  47. cout<<f[][kk]<<'\n';//以1为根节点,选取kk个黑点的最大贡献即答案
  48. return ;
  49. }

「HAOI2015树上染色」「树形DP」的更多相关文章

  1. [HAOI2015]树上染色 树状背包 dp

    #4033. [HAOI2015]树上染色 Description 有一棵点数为N的树,树边有边权.给你一个在0~N之内的正整数K,你要在这棵树中选择K个点,将其染成黑色,并 将其他的N-K个点染成白 ...

  2. bzoj 4033: [HAOI2015]树上染色 [树形DP]

    4033: [HAOI2015]树上染色 我写的可是\(O(n^2)\)的树形背包! 注意j倒着枚举,而k要正着枚举,因为k可能从0开始,会使用自己更新一次 #include <iostream ...

  3. 【BZOJ4033】[HAOI2015]树上染色 树形DP

    [BZOJ4033][HAOI2015]树上染色 Description 有一棵点数为N的树,树边有边权.给你一个在0~N之内的正整数K,你要在这棵树中选择K个点,将其染成黑色,并将其他的N-K个点染 ...

  4. BZOJ_4033_[HAOI2015]树上染色_树形DP

    BZOJ_4033_[HAOI2015]树上染色_树形DP Description 有一棵点数为N的树,树边有边权.给你一个在0~N之内的正整数K,你要在这棵树中选择K个点,将其染成黑色,并 将其他的 ...

  5. 洛谷 P3177 [HAOI2015]树上染色 树形DP

    洛谷 P3177 [HAOI2015]树上染色 树形DP 题目描述 有一棵点数为 \(n\) 的树,树边有边权.给你一个在 \(0 \sim n\)之内的正整数 \(k\) ,你要在这棵树中选择 \( ...

  6. BZOJ4033: [HAOI2015]树上染色(树形DP)

    4033: [HAOI2015]树上染色 Time Limit: 10 Sec  Memory Limit: 256 MBSubmit: 3461  Solved: 1473[Submit][Stat ...

  7. BZOJ 4033[HAOI2015] 树上染色(树形DP)

    4033: [HAOI2015]树上染色 Time Limit: 10 Sec  Memory Limit: 256 MBSubmit: 3188  Solved: 1366[Submit][Stat ...

  8. [HAOI2015]树上染色(树形dp)

    [HAOI2015]树上染色 题目描述 有一棵点数为 N 的树,树边有边权.给你一个在 0~ N 之内的正整数 K ,你要在这棵树中选择 K个点,将其染成黑色,并将其他 的N-K个点染成白色 . 将所 ...

  9. [BZOJ4033][HAOI2015]树上染色(树形DP)

    4033: [HAOI2015]树上染色 Time Limit: 10 Sec  Memory Limit: 256 MBSubmit: 2437  Solved: 1034[Submit][Stat ...

随机推荐

  1. java代码(9) ---guava之Lists、Maps

     guava之Lists.Maps 谷歌提供了guava包里面有很多的工具类,Lists和Maps集合工具,集合操作做了些优化提升 一.概述 1.静态工厂方法 (1)Guava提供了能够推断泛型的静态 ...

  2. Python爬虫 requests库基础

    requests库简介 requests是使用Apache2 licensed 许可证的HTTP库. 用python编写. 比urllib2模块更简洁. Request支持HTTP连接保持和连接池,支 ...

  3. OAuth2.0系列之基本概念和运作流程(一)

    @ 目录 一.OAuth2.0是什么? 1.1 OAuth2.0简介 1.2 OAuth2.0官方文档 二.OAuth2.0原理 2.1 OAuth2.0流程图 三. OAuth2.0的角色 四.OA ...

  4. .NET Core Session源码探究

    前言     随着互联网的兴起,技术的整体架构设计思路有了质的提升,曾经Web开发必不可少的内置对象Session已经被慢慢的遗弃.主要原因有两点,一是Session依赖Cookie存放Session ...

  5. Floating-Point Hazard【求导公式】

    Floating-Point Hazard 题目链接(点击) 题目描述 Given the value of low, high you will have to find the value of ...

  6. CentOS7.5搭建Kafka2.11-1.1.0集群与简单测试

    一.下载 下载地址: http://kafka.apache.org/downloads.html    我这里下载的是Scala 2.11对应的 kafka_2.11-1.1.0.tgz 二.集群规 ...

  7. 安装allure测试报告

    必须安装jdk1.8,配置环境变量 一.环境准备 Windows10 jdk-9.0.1 二.下载并安装JDK 到Java的官网下载JDK安装包,地址:http://www.oracle.com/te ...

  8. 关于单向循环链表的约瑟夫问题(Java实现)

    关于单向循环链表的约瑟夫问题(Java实现) 最近在学习链表时,遇到单向循环链表中的约瑟夫问题.在构建循环链表的代码上,我有一点很不理解,遂记录下来. Josephu问题为: 设编号为1, 2,.. ...

  9. 嵌入式QT开发视频教程-供参考

    免费嵌入式QT开发视频教程 https://pan.baidu.com/s/1bprhJ2Z QT初级到高级编程视频教程--丁林松.rarhttp://www.jisoupan.com/share/2 ...

  10. Java多线程与并发基础

    CS-LogN思维导图:记录专业基础 面试题 开源地址:https://github.com/FISHers6/CS-LogN 多线程与并发基础 实现多线程 面试题1:有几种实现线程的方法,分别是什么 ...