「HAOI2015树上染色」「树形DP」
2024-09-07 18:45:03
其实我还不大会树形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 ;
}
最新文章
- ldconfig和ldd用法
- sphinx 增量索引 实现近实时更新
- Android UI开发第三十一篇——Android的Holo Theme
- 【LeetCode练习题】Add Two Numbers
- check单选框多个全选与取消全选
- ASP.net体系
- Openfire的web插件开发
- ashx导出dataTable为Excel
- # 20175213 2018-2019-2 《Java程序设计》第1周学习总结
- [leetcode]51. N-QueensN皇后
- AIS系统(转)
- vue-3-Class 与 Style 绑定
- day08_雷神_模块一
- .Net Identity OAuth 2.0 SecurityStamp 使用
- CUDA C Programming Guide 在线教程学习笔记 Part 2
- 针对Redis队列的理解,实例操作(转)
- css语法和JS语法的对比
- Sping-Spring JDBC框架
- js_如何优化你的代码让它更好看
- htmlunit 自动化提交/获取网页数据,自动化测试
热门文章
- 使用Java将阿拉伯数字转换为中文数字(适配小数转换)
- LiveCharts 提示框(DataTooltip)百分比一直为0.00%解决办法
- 【JMeter_17】JMeter逻辑控制器__随机顺序控制器<;Random Order Controller>;
- Eclipse设置断点无效、无法拦截请求进行Debug调试
- ca71a_c++_指向函数的指针_通过指针调用函数txwtech
- jwt 工具类
- IDEA自定义类注释和方法注释(自定义groovyScript方法实现多行参数注释)
- 在执行jar包时如何使用调优参数
- Newtonsoft 六个超简单又实用的特性,值得一试 【下篇】
- Java中的final关键字解析