题目链接:

http://codeforces.com/contest/1249/problem/F

题意:

一棵树的每个节点有个权值,选择一个节点集,使得任意点对的距离大于$k$

求最大节点集权值,节点集权值为节点集中节点权值和

数据范围:

$1\leq n \leq 200$

$1\leq k \leq 200$

分析:

定义$dp[v][i]$,代表在$v$这颗子树中,被选择的点最小深度恰好是$i$的最大答案

初始状态$dp[v][0]=a[v]$,这是没有子树的情况,然后再逐个添加子树

$ans=max(dp[n][i])$

AC代码:

#include<bits/stdc++.h>
#define pii pair<int,int>
#define ll long long
using namespace std;
const int maxn=200+7;
int n,m,a[maxn],dp[maxn][maxn],tem[maxn];//dp[i][j]代表在i这个子树中,被选择的点的最小深度是j
//ans=max(dp[n][j])
vector<int>ve[maxn];
void dfs(int x,int f){
dp[x][0]=a[x];//dp[x][0]比较特殊,不能通过子树转移
for(int i=0;i<ve[x].size();i++){
int v=ve[x][i];
if(v==f)continue;
dfs(v,x);
for(int j=0;j<=m;j++)tem[j]=dp[x][j]; for(int j=0;j<=m;j++)//枚举x子树中被用上的最小深度差为j
for(int k=0;k<=m;k++)//枚举v子树中被用上的最小深度差为k
if(j+k+1>=m)//深度相加合法,也就是可以这么选择
tem[min(j,k+1)]=max(tem[min(j,k+1)],dp[x][j]+dp[v][k]); for(int j=0;j<=m;j++)dp[x][j]=tem[j];//转移完再更新,保证是新子树和原来的子树们更新
}
}
int main(){
scanf("%d %d",&n,&m);
m++;
for(int i=1;i<=n;i++)scanf("%d",&a[i]);
for(int i=1;i<=n-1;i++){
int a,b;
scanf("%d %d",&a,&b);
ve[a].push_back(b);
ve[b].push_back(a);
}
dfs(1,-1);
int ans=0;
for(int i=0;i<=m;i++)ans=max(ans,dp[1][i]);
printf("%d\n",ans);
return 0;
}

  

codeforces#1249F. Maximum Weight Subset(树上dp)的更多相关文章

  1. Codeforces 1249F Maximum Weight Subset (贪心)

    题意 在一颗有点权的树上,选若干个点,使得这些点两两距离大于k,且点权和最大 思路 贪心的取比较大的值即可 将所有点按照深度从大到小排序,如果当前点点权\(a[i]\)大于0,则将距离为k以内的所有点 ...

  2. CF1249F Maximum Weight Subset

    CF1249F Maximum Weight Subset 洛谷评测传送门 题目描述 You are given a tree, which consists of nn vertices. Reca ...

  3. F. Maximum Weight Subset(贪心or树形dp解法)

    题:https://codeforces.com/contest/1249/problem/F 题意:给一颗树,边权为1,节点有点权,问取到一个点集,俩俩之间路径超过k,是点权和最大 思路:贪心地取点 ...

  4. Codeforces 1249 F. Maximum Weight Subset

    传送门 设 $f[x][i]$ 表示 $x$ 的子树中,离 $x$ 最近的选择的节点距离为 $i$ 的合法方案的最大价值 设 $val[x]$ 表示节点 $x$ 的价值,首先有 $f[x][0]=va ...

  5. 【CF1249F】Maximum Weight Subset(贪心)

    题意:给定一棵n个点带点权的树,要求从中选出一个点集,使得这些点两两之间距离都大于K,求最大点权和 n,K<=2e2,1<=a[i]<=1e5 思路:树形DP显然可做,极限是n方,然 ...

  6. CodeForces 690C2 Brain Network (medium)(树上DP)

    题意:给定一棵树中,让你计算它的直径,也就是两点间的最大距离. 析:就是一个树上DP,用两次BFS或都一次DFS就可以搞定.但两次的时间是一样的. 代码如下: #include<bits/std ...

  7. Codeforces Round #526 (Div. 2) D. The Fair Nut and the Best Path 树上dp

    D. The Fair Nut and the Best Path 题意:给出一张图 点有权值 边也要权值 从任意点出发到任意点结束 到每个点的时候都可以获得每个点的权值,而从边走的时候都要消耗改边的 ...

  8. Codeforces - 702A - Maximum Increase - 简单dp

    DP的学习计划,刷 https://codeforces.com/problemset?order=BY_RATING_ASC&tags=dp 遇到了这道题 https://codeforce ...

  9. 2019长安大学ACM校赛网络同步赛C LaTale (树上DP)

    链接:https://ac.nowcoder.com/acm/contest/897/C来源:牛客网 LaTale 时间限制:C/C++ 2秒,其他语言4秒 空间限制:C/C++ 32768K,其他语 ...

随机推荐

  1. TextBox 显示横线

    public class Xtxt3 : TextBox { private bool m_underLine; public bool UnderLine { get { return m_unde ...

  2. log4net SmtpAppender 踩坑总结

    错误集合: System.Net.Mail.SmtpException: 命令顺序不正确. 服务器响应为:Error: need EHLO and AUTH first ! System.Net.Ma ...

  3. Ipython 和 python 的区别

    IPython是一个python交互shell,它比默认的python shell更易于使用.它支持自动变量完成.自动缩进.bash shell命令,并且内置了许多有用的函数和函数. IPython是 ...

  4. nginx 之 https 证书配置

    HTTPS原理和作用 为什么需要HTTPS 原因:HTTP不安全 传输数据被中间人盗用.信息泄露 数据内容劫持.篡改 HTTPS协议的实现 对传输内容进行加密以及身份验证 对称加密:加密秘钥和解密秘钥 ...

  5. base64码通过http传输 +号变 空格 以及 图片编码后字符串较长导致POST提交失败 问题解决

    场景:图片上传OSS存储,接口拿字符串去接前端传的base64码,服务器打印入参传的值,发现和前端打印的值有所区别,服务器中打印的值所有+号全部变成空格. 解决办法: Java中使用:url = ur ...

  6. imx6q 启动logo

    转:https://wenku.baidu.com/view/81fa0f3982c4bb4cf7ec4afe04a1b0717fd5b30e.html?rec_flag=default&sx ...

  7. Ubuntu16.04, CUDA8 CUDNN6 下安装 Tensorflow-gpu, Keras, Pytorch, fastai

    如何访问tensorflow官方网站 tensorflow官方网站变为:https://tensorflow.google.cn/ 安装深度学习框架 0. ubuntu查看CUDA和cuDNN版本 C ...

  8. C#解析多层Json数据

    [事件回顾] 今天在做一个小项目的时候,想获取一下位置,IP地址,然后随便在网上找了一个api调用 https://apis.map.qq.com/ws/location/v1/ip 数据如下: 如果 ...

  9. Linux CPU问题排查

    某个进程的内存占用情况 查找进程pid——>进入该进程的目录/proc/{pid}/.有三个文件记录了进程内存 root@ROUTER:~# ps | grep zebra 1507 root ...

  10. 关于MQ的几件小事(一)消息队列的用途、优缺点、技术选型

    1.为什么使用消息队列? (1)解耦:可以在多个系统之间进行解耦,将原本通过网络之间的调用的方式改为使用MQ进行消息的异步通讯,只要该操作不是需要同步的,就可以改为使用MQ进行不同系统之间的联系,这样 ...