其实我还不大会树形DP

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

题目链接 BZOJ4033

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

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

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

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

的最大值即答案

#include <iostream>
#include <algorithm>
#include <cstdio>
#include <vector>
#include <cmath>
#define int long long
using namespace std; int n,kk;
const int maxn=;
int f[maxn][maxn],size[maxn];//f数组即dp,f[i][j]表示当前节点i下放j个黑点时对答案的最大贡献
vector<pair<int,int> >G[maxn];//first表示下一个子节点,second表示边权 inline void dfs(int x,int fa){
f[x][]=f[x][]=;//当前一个点也没有,初值为零
int u;//字节点
int ans;
size[x]=;
for(int i=;i<G[x].size();i++){
u=G[x][i].first;//枚举所有孩子
if(u==fa) continue;
dfs(u,x);
size[x]+=size[u];//权值统计
for(int j=size[x];j>=;j--){//要倒着循环
for(int k=;k<=size[u]&&k<=j;k++){//j-k的个数
ans=k*(kk-k)+(size[u]-k)*(n-kk-(size[u]-k));//先加起来
ans*=G[x][i].second;//乘上边权
ans+=f[u][k];//统计答案
f[x][j]=max(f[x][j],f[x][j-k]+ans);//背包
}
}
}
} signed main(){
cin>>n>>kk;
for(int i=;i<=n-;i++){
int x,y,z;
cin>>x>>y>>z;
G[x].push_back(make_pair(y,z));
G[y].push_back(make_pair(x,z));
}//建图
for(int i=;i<=n;i++)
for(int j=;j<=n;j++)
f[i][j]=-0x7ffffffffffffff;//因为要取max,初始化为极小值
dfs(,);
cout<<f[][kk]<<'\n';//以1为根节点,选取kk个黑点的最大贡献即答案
return ;
}

最新文章

  1. ldconfig和ldd用法
  2. sphinx 增量索引 实现近实时更新
  3. Android UI开发第三十一篇——Android的Holo Theme
  4. 【LeetCode练习题】Add Two Numbers
  5. check单选框多个全选与取消全选
  6. ASP.net体系
  7. Openfire的web插件开发
  8. ashx导出dataTable为Excel
  9. # 20175213 2018-2019-2 《Java程序设计》第1周学习总结
  10. [leetcode]51. N-QueensN皇后
  11. AIS系统(转)
  12. vue-3-Class 与 Style 绑定
  13. day08_雷神_模块一
  14. .Net Identity OAuth 2.0 SecurityStamp 使用
  15. CUDA C Programming Guide 在线教程学习笔记 Part 2
  16. 针对Redis队列的理解,实例操作(转)
  17. css语法和JS语法的对比
  18. Sping-Spring JDBC框架
  19. js_如何优化你的代码让它更好看
  20. htmlunit 自动化提交/获取网页数据,自动化测试

热门文章

  1. 使用Java将阿拉伯数字转换为中文数字(适配小数转换)
  2. LiveCharts 提示框(DataTooltip)百分比一直为0.00%解决办法
  3. 【JMeter_17】JMeter逻辑控制器__随机顺序控制器&lt;Random Order Controller&gt;
  4. Eclipse设置断点无效、无法拦截请求进行Debug调试
  5. ca71a_c++_指向函数的指针_通过指针调用函数txwtech
  6. jwt 工具类
  7. IDEA自定义类注释和方法注释(自定义groovyScript方法实现多行参数注释)
  8. 在执行jar包时如何使用调优参数
  9. Newtonsoft 六个超简单又实用的特性,值得一试 【下篇】
  10. Java中的final关键字解析