dp[i][j]表示以i为根节点的子树中选j个城市贡献边长的最小值,怎样由子树向上递推呢,子树是一个天然的组,dp[u][j]可以这样理解,u子树容量为j是由上一层dp[u][j-f]推出的,应用了滚动数组。

#include<iostream>
#include<string>
#include<cstring>
#include<cstdio>
#include<cmath>
#include<iomanip>
#include<map>
#include<algorithm>
#include<queue>
#include<set>
#define inf 10000000000000
#define pi acos(-1.0)
#define eps 1e-8
#define seed 131
using namespace std;
typedef pair<int,int> pii;
typedef unsigned long long ull;
typedef long long ll;
const int maxn=100005;
ll dp[2005][55];
vector<pii>g[2005];
int n,k;
void dfs(int u,int fa)
{for(int i=0;i<g[u].size();i++){if(g[u][i].first==fa)continue;dfs(g[u][i].first,u);int v=g[u][i].first;for(int j=k;j>=0;j--){for(int f=0;f<=j;f++){dp[u][j]=min(dp[u][j],dp[u][j-f]+dp[v][f]+f*(k-f)*2*g[u][i].second);}}}
}
int main()
{int t;int a,b,c;scanf("%d",&t);while(t--){scanf("%d%d",&n,&k);for(int i=1;i<=n;i++)g[i].clear();for(int i=0;i<n-1;i++){scanf("%d%d%d",&a,&b,&c);g[a].push_back(pii(b,c));g[b].push_back(pii(a,c));}memset(dp,-1,sizeof(dp));for(int i=1;i<=n;i++){for(int j=0;j<=k;j++){if(j<=1)dp[i][j]=0;elsedp[i][j]=inf;}}dfs(1,-1);cout<<dp[1][k]<<endl;}return 0;
}

hdu5148 树形dp,分组背包相关推荐

  1. ZOJ 3450 Doraemon's Railgun (DP·分组背包)

    题意  多啦A梦有一个超电磁炮  然后要打死n堆敌人  在同一条射线上的敌人只有先打死前面的一堆才能打后面的一堆  给你打死某堆敌人需要的时间和这堆敌人的人数   问你在T0时间内最多打死多少个敌人 ...

  2. 牛客挑战赛34 A 能天使的愿望 (dp 分组背包)

    链接:https://ac.nowcoder.com/acm/contest/2271/A 来源:牛客网 题目描述 出题人寄给大家的一些闲话:参加了CSP-J/S 2019 的同学,考的都怎么样啊?不 ...

  3. HYSBZ - 1017 魔兽地图【树形DP依赖性背包】

    HYSBZ - 1017 Description DotR (Defense of the Robots) Allstars是一个风靡全球的魔兽地图,他的规则简单与同样流行的地图DotA (Defen ...

  4. 树形dp+树形结构总结

    总结 最近写了好多树形dp+树形结构的题目,这些题目变化多样能与多种算法结合,但还是有好多规律可以找的. 先说总的规律吧! 一般来说树形dp在设状态转移方程时都可以用f[i][]表示i这颗子树怎么怎么 ...

  5. hdu 5148 树形dp,分组背包

    题目: 题目分析: 状态方程: dp[当前节点的标号][当前已经选取的城市数] 设已经选取的城市数是K 初始状态: dp[u][0] = dp[u][1] = 0 , 其他的将值设置为无穷大 树形转移 ...

  6. 洛谷:P4516 [JSOI2018] 潜入行动(树形dp、树上分组背包统计方案数)

    潜入行动 题意: 在树上每个点可以放置监控设备,监控该点周围的点(不包括该点),问刚好放置 k 个监控设备监控使得整棵树所有点都被监控的方案数是多少. 思路: 显然是个树形dp,k个监控自然联想分组背 ...

  7. BZOJ 2133 切割(树形DP,树上背包)大概是本题全网第一篇题解 >_<【BZOJ 修复工程】

    整理的算法模板合集: ACM模板 点我看算法全家桶系列!!! 实际上是一个全新的精炼模板整合计划 BZOJ 2133 切割这道题全网搜不到任何一篇题解 >_< 看评测记录也没有几个人AC- ...

  8. 【每日DP】day 8、P2014 [CTSC1997]选课(树形DP(树形背包)模板)难度⭐⭐⭐

    P2014 [CTSC1997]选课 题意为选一门课前要看它是否有前提条件:即选了一门主课才能选 "副科",所以可以树形背包来做. 注意是不能用分组背包来做,因为这道题附件有很多个 ...

  9. POJ 1155 TELE 背包型树形DP 经典题

    由电视台,中转站,和用户的电视组成的体系刚好是一棵树 n个节点,编号分别为1~n,1是电视台中心,2~n-m是中转站,n-m+1~n是用户,1为root 现在节点1准备转播一场比赛,已知从一个节点传送 ...

最新文章

  1. 深度学习AI美颜系列---天天P图疯狂变脸算法
  2. 从虚拟化、统一映射和自动化看09年法规遵从趋势
  3. 学习LINUX的几点注意事项
  4. centOS 7 yum安装MySQL5.6
  5. Dubbo 3.0 - 开启下一代云原生微服务
  6. pytorch教程龙曲良16-20
  7. 虚拟化容器Docker的安全性讨论
  8. 培训时常犯的学习误区与应对方法
  9. ICDAR 2019 文本识别冠军方案将开源!
  10. 62. 不同路径(JavaScript)
  11. HttpClient的3种超时
  12. 心理学系列:《乌合之众》读书笔记
  13. Shell 编程入门到精通
  14. 小学计算机组成的说课PPT,小学说课课件.ppt
  15. PHP 仍然是最流行的服务器端编程语言
  16. 延迟秋招总结,什么工作可以月薪过万?
  17. python 经典图书排行榜_书榜 | 计算机书籍(8.12-8.18)销售排行榜
  18. word2016从某一页开始插入新的起始页码
  19. 〖Python 数据库开发实战 - Python与MySQL交互篇④〗- 数据库连接池技术
  20. 十进制、八进制和十六进制,各种进制存在的意义,为什么要设计出来?

热门文章

  1. Spacy model download
  2. android控制中心实现,基于Android平台的智能家居系统控制中心的设计与实现
  3. 【Android,Kotlin,TFLite】移动设备集成深度学习轻模型TFlite(图像分类篇)
  4. onedrive手机客户端_OneDrive手机版
  5. 【JS】1162- 90% 的前端都会使用 ES6 来简化代码,你都用过哪些?
  6. 商业需求文档该如何去写?
  7. unity3d:向量计算:获得两点连线的垂直向量,判断目标方位(前后左右)
  8. 实用的一些网站 合集
  9. 往事如烟 - 老钟11
  10. 什么是第三代半导体,半导体的发展历程,第三代半导体的前景