【蓝桥杯 算法训练】强力党逗志芃
题目
题目链接
蓝桥杯 算法训练 强力党逗志芃
思路:
树形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.0s 内存限制:256.0MB 问题描述 逗志芃励志要成为强力党,所以他将身上所以的技能点都洗掉了重新学技能.现在我们可以了解到,每个 ...
- 蓝桥杯算法训练-强力党逗志芃
持续更新蓝桥杯算法训练题解,有兴趣可以关注一波呀 题目 逗志芃励志要成为强力党,所以他将身上所以的技能点都洗掉了重新学技能.现在我们可以了解到,每个技能都有一个前提技能,只有学完了前提技能才能学习当前 ...
- 算法训练 强力党逗志芃
算法训练 强力党逗志芃 目录 1.题目 2.输入格式 3.输出格式 4.代码部分 目录 代码分析2022/4/16补 1.题目 问题描述 逗志芃励志要成为强力党,所以他将身上所以的技能点都洗掉了重新学 ...
- 蓝桥杯 试题 算法训练 强力党逗志芃(C++)
强力党逗志芃 题目浏览 算法代码 算法核心思路 题目浏览 资源限制 时间限制:1.0s 内存限制:256.0MB 问题描述 逗志芃励志要成为强力党,所以他将身上所以的技能点都洗掉了重新学技能.现在我们 ...
- 试题 算法训练 强力党逗志芃
问题描述 逗志芃励志要成为强力党,所以他将身上所以的技能点都洗掉了重新学技能.现在我们可以了解到,每个技能都有一个前提技能,只有学完了前提技能才能学习当前的技能(有一个最根本的技能不需要前提技能).学 ...
- 第十四届蓝桥杯集训——练习解题阶段(无序阶段)-ALGO-987 强力党逗志芃
第十四届蓝桥杯集训--练习解题阶段(无序阶段)-ALGO-987 强力党逗志芃 目录 第十四届蓝桥杯集训--练习解题阶段(无序阶段)-ALGO-987 强力党逗志芃 前言 关于数学的疑问 算法训练 强 ...
- 蓝桥杯 强力党逗志芃 链式前向星结构的树形dp
// 蓝桥杯 强力党逗志芃 // 采用树形dp,树以链式前向星形式存储#include <iostream> using namespace std;int power[205]; // ...
- 强力党逗志芃(蓝桥杯)python解法
题目 # 逗志芃励志要成为强力党,所以他将身上所以的技能点都洗掉了重新学技能. # 现在我们可以了解到,每个技能都有一个前提技能,只有学完了前提技能才能学习当前 # 的技能(有一个最根本的技能不需要前 ...
- 蓝桥杯算法训练 无聊的逗-详细注释版
试题 算法训练 无聊的逗 资源限制 时间限制:1.0s 内存限制:256.0MB 问题描述 逗志芃在干了很多事情后终于闲下来了,然后就陷入了深深的无聊中.不过他想到了一个游戏来使他更无聊.他拿出n个木 ...
最新文章
- python合并k个有序链表_Leetcode合并K个升序链表(Python版本),LeetCode,python
- 17岁成研究生,20岁被劝退,38岁“神童”离世
- mySql 主从复制linux配置
- 3分钟解决MySQL 1032 主从错误(转)
- 深入理解Binder机制4-bindService过程分析
- php date strtotime的用法
- 【数据结构与算法】之深入解析“环形链表II”的求解思路与算法示例
- SpringBoot实战(三):整合Mybatis配置多数据源
- 如何基于列值从DataFrame中选择行?
- 什么是基本包装类型?
- 批标准化(batch normalization)与层标准化(layer normalization)比较
- go和python组合开发_Go+Python双语言混合开发
- python里进度条编程_Python实现控制台中的进度条
- CSDN 空间:“迷你博客”很迷人(1)
- 联想数字化转型之路:从传统IT到“新IT”
- c语言变量大全,C语言变量
- 混合颜色带(基础篇)
- python random库画多彩蟒蛇_python画彩色蟒蛇
- 宝塔面板 linux工具箱,宝塔面板教程大全–宝塔linux面板专业版数据同步插件使用教程...
- D3.js【学习一】
热门文章
- 吃播界网红浪胃仙自立门户
- R语言使用epiDisplay包的summ函数计算dataframe数据中的指定数据列在分组变量下的统计量、可视化一个按照分类变量绘制的有序点图(有序点图分析数值型变量的分布、密集趋势、异常值)
- mysql自增id跳跃增长不连续,auto_increment_increment的问题
- Linux安装Redis详解
- Leetcode c语言众数问题
- 决战Python之巅(十二)
- 学习Java日志框架之——搞懂日志门面(JCL+SLF4J)
- 华为荣耀平板2_华为荣耀平板2开箱 使用感受_什么值得买
- 安全应急漏洞排查思路
- 匹配中文字符正则表达式