题目

题目链接
蓝桥杯 算法训练 强力党逗志芃

思路:

树形dp

定义状态:

dp[i][j]表示以i为根,消耗j个技能点,最多能换取的v

状态转移方程:

dp[pos][k]=max(dp[son][h]+dp[pos][k-h],dp[pos][k])

#include<iostream>
#include<cstring>
#include<cstdio>
using namespace std;
int m,n,f[205],v[205];
struct ss{int to,nex;
}edge[205];int head[205],ecnt;
void add(int x,int y){edge[++ecnt]=(ss){y,head[x]};head[x]=ecnt;
}
//dp[i][j]表示以i为根,消耗j个技能点,最多能换取的v
int dp[205][205];
//dp[pos][k]=max(dp[son][h]+dp[pos][k-h],dp[pos][k])
void dfs(int pos){for(int i=head[pos];i;i=edge[i].nex){int to=edge[i].to;dfs(to);for(int k=m;k;k--)for(int h=k;h;h--)dp[pos][k]=max(dp[to][h]+dp[pos][k-h],dp[pos][k]);//这里的dp[pos][k-h]其实代表了循环过的儿子的能力 //k倒着循环的原因:保证用当前儿子更新过的都是dp[pos][>k],以保证dp[pos][k-h]是其他儿子的贡献,不受当前儿子自己影响 //h正着循环倒着循环无所谓 }for(int i=m;i>=1;i--) dp[pos][i]=dp[pos][i-1]+v[pos];//把自己的value加上 return;
}

DFS写dp

int main(){cin>>n>>m;for(int i=1;i<=n;i++) cin>>v[i];for(int i=1;i<=n-1;i++){int x,y;cin>>x>>y;add(x,y);f[y]=x;}int S;for(int i=1;i<=n;i++)if(!f[i]) S=i,i=n+1;//技能树的root dfs(S);//树形dp cout<<dp[S][m];return 0;
}

【蓝桥杯 算法训练】强力党逗志芃相关推荐

  1. 蓝桥杯 算法训练 强力党逗志芃

    蓝桥杯 算法训练 强力党逗志芃 题目描述 资源限制 时间限制:1.0s 内存限制:256.0MB 问题描述 逗志芃励志要成为强力党,所以他将身上所以的技能点都洗掉了重新学技能.现在我们可以了解到,每个 ...

  2. 蓝桥杯算法训练-强力党逗志芃

    持续更新蓝桥杯算法训练题解,有兴趣可以关注一波呀 题目 逗志芃励志要成为强力党,所以他将身上所以的技能点都洗掉了重新学技能.现在我们可以了解到,每个技能都有一个前提技能,只有学完了前提技能才能学习当前 ...

  3. 算法训练 强力党逗志芃

    算法训练 强力党逗志芃 目录 1.题目 2.输入格式 3.输出格式 4.代码部分 目录 代码分析2022/4/16补 1.题目 问题描述 逗志芃励志要成为强力党,所以他将身上所以的技能点都洗掉了重新学 ...

  4. 蓝桥杯 试题 算法训练 强力党逗志芃(C++)

    强力党逗志芃 题目浏览 算法代码 算法核心思路 题目浏览 资源限制 时间限制:1.0s 内存限制:256.0MB 问题描述 逗志芃励志要成为强力党,所以他将身上所以的技能点都洗掉了重新学技能.现在我们 ...

  5. 试题 算法训练 强力党逗志芃

    问题描述 逗志芃励志要成为强力党,所以他将身上所以的技能点都洗掉了重新学技能.现在我们可以了解到,每个技能都有一个前提技能,只有学完了前提技能才能学习当前的技能(有一个最根本的技能不需要前提技能).学 ...

  6. 第十四届蓝桥杯集训——练习解题阶段(无序阶段)-ALGO-987 强力党逗志芃

    第十四届蓝桥杯集训--练习解题阶段(无序阶段)-ALGO-987 强力党逗志芃 目录 第十四届蓝桥杯集训--练习解题阶段(无序阶段)-ALGO-987 强力党逗志芃 前言 关于数学的疑问 算法训练 强 ...

  7. 蓝桥杯 强力党逗志芃 链式前向星结构的树形dp

    // 蓝桥杯 强力党逗志芃 // 采用树形dp,树以链式前向星形式存储#include <iostream> using namespace std;int power[205]; // ...

  8. 强力党逗志芃(蓝桥杯)python解法

    题目 # 逗志芃励志要成为强力党,所以他将身上所以的技能点都洗掉了重新学技能. # 现在我们可以了解到,每个技能都有一个前提技能,只有学完了前提技能才能学习当前 # 的技能(有一个最根本的技能不需要前 ...

  9. 蓝桥杯算法训练 无聊的逗-详细注释版

    试题 算法训练 无聊的逗 资源限制 时间限制:1.0s 内存限制:256.0MB 问题描述 逗志芃在干了很多事情后终于闲下来了,然后就陷入了深深的无聊中.不过他想到了一个游戏来使他更无聊.他拿出n个木 ...

最新文章

  1. python合并k个有序链表_Leetcode合并K个升序链表(Python版本),LeetCode,python
  2. 17岁成研究生,20岁被劝退,38岁“神童”离世
  3. mySql 主从复制linux配置
  4. 3分钟解决MySQL 1032 主从错误(转)
  5. 深入理解Binder机制4-bindService过程分析
  6. php date strtotime的用法
  7. 【数据结构与算法】之深入解析“环形链表II”的求解思路与算法示例
  8. SpringBoot实战(三):整合Mybatis配置多数据源
  9. 如何基于列值从DataFrame中选择行?
  10. 什么是基本包装类型?
  11. 批标准化(batch normalization)与层标准化(layer normalization)比较
  12. go和python组合开发_Go+Python双语言混合开发
  13. python里进度条编程_Python实现控制台中的进度条
  14. CSDN 空间:“迷你博客”很迷人(1)
  15. 联想数字化转型之路:从传统IT到“新IT”
  16. c语言变量大全,C语言变量
  17. 混合颜色带(基础篇)
  18. python random库画多彩蟒蛇_python画彩色蟒蛇
  19. 宝塔面板 linux工具箱,宝塔面板教程大全–宝塔linux面板专业版数据同步插件使用教程...
  20. D3.js【学习一】

热门文章

  1. 吃播界网红浪胃仙自立门户
  2. R语言使用epiDisplay包的summ函数计算dataframe数据中的指定数据列在分组变量下的统计量、可视化一个按照分类变量绘制的有序点图(有序点图分析数值型变量的分布、密集趋势、异常值)
  3. mysql自增id跳跃增长不连续,auto_increment_increment的问题
  4. Linux安装Redis详解
  5. Leetcode c语言众数问题
  6. 决战Python之巅(十二)
  7. 学习Java日志框架之——搞懂日志门面(JCL+SLF4J)
  8. 华为荣耀平板2_华为荣耀平板2开箱 使用感受_什么值得买
  9. 安全应急漏洞排查思路
  10. 匹配中文字符正则表达式