懒得复制题面了直接传送门吧

分析

直接求点与点之间的距离感觉不是很好求,所以我们考虑换一个求法。

瞄了一眼题解

距离跟路径上边的长度有关,所以我们直接来看每一条边的贡献吧(这谁想得到啊)

对于每一条边,它的贡献等于 (一边的白点数*另一边的白点数+一边的黑点数*另一边的黑点数)*边权

然后。。。。。我又卡住了。再次瞄题解

对于任意一棵子树,只要知道子树的大小和黑点个数,就可以算出将子树与外界相连的那条边的贡献

所以直接dp[i][j]表示i为根节点的子树中与j个黑色节点的对答案的最大贡献,然后直接树上背包就好了。

注意枚举状态的时候不要枚举到无意义的状态(这个点调了我半天)

代码(压行是信仰)

#include<cstdio>
#include<algorithm>
using namespace std;
const int maxn=;
long long dp[maxn][maxn];
int n,K,ecnt,info[maxn],siz[maxn],inp[maxn],nx[maxn*],v[maxn*],w[maxn*];
void add(int u1,int v1,int w1){nx[++ecnt]=info[u1];info[u1]=ecnt;v[ecnt]=v1;w[ecnt]=w1;}
void dfs(int x,int f)
{
siz[x]=;
for(int i=info[x];i;i=nx[i])if(v[i]!=f)
{
inp[v[i]]=w[i];dfs(v[i],x);siz[x]+=siz[v[i]];
for(int j=min(siz[x],K);j>=;j--)
for(int k=;k<=j&&k<=siz[v[i]];k++)
if(j-k<=siz[x]-siz[v[i]])dp[x][j]=max(dp[x][j],dp[x][j-k]+dp[v[i]][k]);
}
for(int i=;i<=siz[x]&&i<=K;i++)
dp[x][i]+=1ll*(1ll*i*(K-i)+1ll*(siz[x]-i)*(n-K-siz[x]+i))*inp[x];
}
int main()
{
scanf("%d%d",&n,&K);
for(int i=,u1,v1,w1;i<n;i++)
scanf("%d%d%d",&u1,&v1,&w1),add(u1,v1,w1),add(v1,u1,w1);
dfs(,);printf("%lld\n",dp[][K]);
}

最新文章

  1. 1Z0-053 争议题目解析695
  2. *HDU2473 并查集
  3. Android中dip、dp、sp、pt和px的区别
  4. 个人js
  5. SharePoint 服务器端对象模型操作用户组(创建/添加/删除)
  6. linux学习之用户管理
  7. MIS2000 Lab,我的IT人生与职场--从零开始的前十五年 与 我的微创业
  8. SQL事务隔离级别
  9. C++返回引用的函数
  10. Servlet中获取JSP内置对象
  11. 使用 Struts2 校验器校验用户注册信息
  12. 性能测试分享:Jmeter的api监控工具解决方案
  13. Python全栈之路-Day31
  14. js基础回顾-数据类型和typeof怎么用
  15. Python系列之 - python循环语句
  16. Dnsmasq加速本地DNS请求
  17. php学习笔记之动态生成一组单选button
  18. CentOS7--使用yum安装和管理软件
  19. sc create SVN-Service binpath= &quot;D:\Program Files\Svn\bin\s vnserve.exe --service -r E:\repository\svn&quot; displayname= &quot;SVN-Service&quot; start= au to depend= Tcpip [SC] OpenSCManager 失败 5:
  20. BZOJ 3786: 星系探索 解题报告

热门文章

  1. 【洛谷 P2408】 不同子串个数(后缀自动机)
  2. [React] 函数定义组件
  3. HP-UX 解压缩tar.gz
  4. JavaPoet的基本使用
  5. MySQL Case--应用服务器性能瓶颈导致慢SQL
  6. Android笔记(三十八) Android中的数据存储——SharedPreferences
  7. Apache 安装后Error 403的故障排错方法(linux)
  8. QT生成的exe在其他电脑打开
  9. 3D-2D透视投影数学推导
  10. python根据字典的值进行排序: