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

第七届蓝桥杯参赛经历回顾 现在是2017年5月26日 14:14 上不了电脑,用手机写的草稿。明天是第八届蓝桥杯决赛的日子,蓝桥杯似乎越办越好了,看着广大童鞋说这一届试题比往届更暴力,有种莫名的愉悦。 去年刚刚参加了蓝桥杯,报了JavaB组,成功避开了A组和C语言组的大神们,水了个国三。。。考完就懈怠了准备期末考试去了,也没研究试题。 觉得Java组真心好办事,自带很多方便的api,如Calendar类解决了大多简单日 阅读详情

题目浏览

资源限制
时间限制:1.0s 内存限制:256.0MB

问题描述
  逗志芃励志要成为强力党,所以他将身上所以的技能点都洗掉了重新学技能。现在我们可以了解到,每个技能都有一个前提技能,只有学完了前提技能才能学习当前的技能(有一个最根本的技能不需要前提技能)。学习每个技能要消耗一个技能点,然后可以获得这个技能的威力值。由于逗志芃要陪妹子,所以他希望你教他如何点技能使得威力值最大从而成为强力党。
  
输入格式
  第一行两个数n,m表示有n个技能和m个技能点。第二行有n个数,第i个数表示第i个技能的威力值。
  之后的n-1行,每行两个数x,y,表示y技能的前提技能是x,也就是说先学第x个技能才能学弟y个技能。
  
输出格式
  一个数,最大的威力值。
  
样例输入
3 2
1 10 20
1 2
1 3

样例输出
21

数据规模和约定
  0<n,m<=200, 技能的威力值不超过200。

算法代码

#include<iostream>
#include<algorithm>
#include<cstring>
using namespace std;

const int N = 210;

int n,m;
int q[N];
int h[N],e[N],ne[N],idx;
int dp[N][N];//以i为根节点,总花费的点数不超过j的最大方案
bool st[N];//是否有前驱
int res = 0;//伤害的最大的值


void add(int x,int y)
{
    e[idx] = y,ne[idx] = h[x],h[x] = idx++;
}

void dfs(int u)
{
    for(int i = h[u];i != -1; i = ne[i])//循环物品组
    {
        int son = e[i];
        dfs(son);

        for(int j = m - 1; j >= 0; j--)//循环剩余的点数
            for(int k = 0; k <= j; k++)//循环决策
                dp[u][j] = max(dp[u][j], dp[u][j - k] + dp[son][k]);
    }

    //将当前的节点1
    for(int i = m; i >= 1; i--) dp[u][i] = dp[u][i - 1] + q[u];
    dp[u][0] = 0;
}

int main()
{
    cin >> n >> m;
    memset(h, -1 ,sizeof h);

    for(int i = 1; i <= n; i++)//读取每个节点的值
        cin>>q[i];

    for(int i = 1; i < n; i++)//读取节点之间的关系
    {
        int x,y;
        cin >> x >> y;
        add(x,y);//x为y的父节点
        st[y] = true;
    }

    int root;//寻找根节点
    for(int i = 1; i <= n; i++)
        if(st[i] == false){
            root = i;
            break;
        }
    
    dfs(root);
	
    cout << dp[root][m] << endl;

    return 0;
}

算法核心思路

这个题目属于 树形动态规划、有依赖的背包问题

技能与技能之间有从属关系,所以可以将节点变成一个树形结构

dp[i][j] 表示以i为根节点(选择的技能),容积为j(能用的技能点数)的背包最多能装下的价值(伤害最高)

状态转移可以看成是分组背包问题(以子节点作为一组,每组里面有若干个体积的划分,且每个体积只能选一次,选择价值最大的那个体积),以体积作为划分的依据(如果是以点为划分的依据,那么时间复杂度会很高)

这个是之前有人私信我,然后我写的整个流程

在这里插入图片描述

蓝桥杯算法习题汇总 整理的很全面蓝桥杯算法习题,分享给需要的同学,里面包含蓝桥杯算法题库里的习题,算法包含c/c++和java都有的,有的有多种解题方法 立即下载

相关推荐

蓝桥杯算法训练答案

蓝桥杯练习系统算法训练答案,参加蓝桥杯的同学不可多得的资料,里面的题目全部使用java语言实现,其他语言也可以参考

蓝桥杯:最大分解

问题描述   给出一个正整数n,求一个和最大的序列a0,a1,a2,……,ap,满足n=a0>a1>a2>……>ap且ai+1是ai的约数,输出a1+a2+……+ap的最大值 输入格式   输入仅一行,包含一个正整数n 输出格式   一个正整数,表示最大的序列和,即a1+a2+……+ap的最大值 样例输入 10 样例输出 6 数据规模和约定   1<n<=10^6 样例说明   p=2   a0=10,a1=5,a2=1,6=5+1 #i

weixin_48908034的博客 1529

UDS 诊断 - CommunicationControl(通信控制)(0x28)服务 诊断

字节参数名称字节值#1CommunicationControl(通信控制)请求SID0x28#2#3communicationType(通信类型)#4nodeIdentificationNumer(节点标识符)(高位字节)controlType 为 0x04 或 0x05 时,使用该参数#5nodeIdentificationNumer(节点标识符)(低位字节)controlType 为 0x04 或 0x05 时,使用该参数。

耳朵东金子千的博客 1822

【蓝桥杯 算法训练】强力党逗志芃

发现自己的dp能力还是很弱,记一道树形dp //title:http://lx.lanqiao.cn/problem.page?gpid=T2963 //蓝桥杯 算法训练 强力党逗志芃 //树形dp #include<iostream> #include<cstring> #include<cstdio> using namespace std; int m,n,f[205],v[205]; struct ss{ int to,nex; }edge[205];int h

高斯的博客 2123

Matlab实战:12种优化算法在CEC2014测试集上的性能对比(附完整代码)

本文详细对比了12种优化算法在CEC2014测试集上的性能表现,包括PSO、DE、GA等主流算法。通过Matlab实现完整的实验流程,涵盖算法实现、参数设置、结果分析与可视化,为工程优化问题提供实用解决方案。特别关注收敛曲线和评价指标,帮助读者选择最适合特定场景的优化算法。

wine的专栏 682

STM32+OV7670实战:5步搞定低成本人脸识别门禁系统(附完整代码)

本文详细介绍了基于STM32单片机和OV7670摄像头构建低成本离线人脸识别门禁系统的完整实战方案。文章从硬件选型、电路设计避坑入手,逐步讲解了图像采集优化、轻量级人脸检测与LBP特征提取策略,并提供了离线人脸库管理、特征比对以及系统集成的具体实现方法,附有核心代码示例,旨在帮助开发者快速实现可落地的嵌入式视觉应用。

kubernetes8ctl的博客 568

蓝桥杯算法训练——逗志凡的危机——动态规划+递归

算法训练 逗志芃的危机 题目描述 逗志芃又一次面临了危机。逗志芃的妹子是个聪明绝顶的人,相比之下逗志芃就很菜了。现在她妹子要和他玩一个游戏,这个游戏是这样的:一共有n个数(n是偶数)写成一行,然后两个人轮流取数,每次只能从最前面或者最后面取走一个数,全部取完则游戏结束,之后每个人取走的数的和就是每个人的得分。由于逗志芃妹子很厉害,但他又不想输,所以只能找到你了,你要告诉他最多可以得到多少分。(注意,妹子智商是maxlongint所以是不会犯错的,每次的策略必然最优,而且逗志芃是先手) 输入格式 第一行一个数

shijieyidian的博客 7562

Windows 10/11蓝屏急救:SECURE_PCI_CONFIG_SPACE_ACCESS_VIOLATION报错全攻略(附安全模式+CMD修复)

本文针对Windows 10/11系统常见的SECURE_PCI_CONFIG_SPACE_ACCESS_VIOLATION蓝屏报错,提供了从诊断到修复的完整解决方案。文章深入剖析了该错误与系统安全功能“内存完整性”及pci.sys驱动的关系,并详细指导用户如何通过安全模式进行基础修复,以及使用命令提示符执行高级系统文件修复和注册表修改,帮助用户彻底解决蓝屏问题并恢复系统稳定。

echo99的专栏 970

算法训练 强力党逗志芃

算法训练 强力党逗志芃

m0_53270352的博客 1028

告别玄学调试:用STM32CubeMX和逻辑分析仪搞定DP83848的RMII与SMI接口

本文详细介绍了如何使用STM32CubeMX和逻辑分析仪调试DP83848的RMII与SMI接口,帮助开发者超越表象,直接观察底层通信波形。通过实战案例和高级调试技巧,解决常见问题如时钟偏移、信号完整性等,提升网络接口的稳定性和可靠性。

weixin_30752699的博客 303

【HAL库-STM】智能温控按键小风扇【胎教级教学】

硬件设备:DHT11,0.96寸oled屏,二/三/四线风扇(不挑),面包板 、f10的精英板等等。当人在的风扇面前时可以自行控制风扇,不在面前时又想开风扇就让他温控自行开启,(在这里有一个想法就是加上蓝牙和wifi控制的功能能够远程遥控,这个如果做的再全一点就要自主研发是一个多功能app,这里没有做。针对这个dht11,我一开始是卡在了这个check函数里面,一直是我给完dht11低电平和高电平后,dht11不回复我低电平和高电平,这个不是我的问题,当时代码是没毛病的,这个点一直卡着我。吐血五天实现小成品

weixin_52451652的博客 1741

试题 算法训练 逗志芃的危机 C++实现

轮到小豆拿时,小豆有两种拿的方法,第一种是拿左边的,即a[l],由于我们使用的是动态规划,故 我们的状态转移方程为 dp[l][r] =dp[l+1][r]+a[l] 了解动态规划的小伙伴可能都不陌生,dp[l+1][r]在前面的计算中已经计算出来了,第二种为拿右边的,同理dp[l][r] =dp[l][r-1]+a[r],因为小豆要拿最大的,所以我们要取他们两种情况的最大值,即。在这里,小豆的dp[l][r]=dp[l+1][r]+dp[l][r-1]组成的。在本题中的最优解中,那肯定是取两端最大的。

m0_74362844的博客 1763

YOLO与ORB-SLAM3的结合:实现动态环境下的目标检测与视觉SLAM

摘要: 本文介绍如何将YOLOv5目标检测与ORB-SLAM3视觉SLAM系统结合,实现动态环境下的机器人感知与定位。内容包括:源码下载(集成项目YOLO_ORB_SLAM3)、libtorch安装(PyTorch C++支持)、编译配置(解决路径依赖问题)、ROS环境下的部署(Noetic适配),以及使用TUM数据集的测试流程(RGB-D数据关联与运行)。重点解决编译时Torch路径错误、ROS与Anaconda冲突等问题,并展示系统运行效果。该整合方案为动态场景SLAM提供目标检测能力,未来可优化检测模

FJN110的博客 962

【蓝桥杯Python】试题 算法训练 强力党逗志芃

现在我们可以了解到,每个技能都有一个前提技能,只有学完了前提技能才能学习当前的技能(有一个最根本的技能不需要前提技能)。动态规划的状态可以定义为`dp[i][j]`表示在以第`i`个技能为根的子树中,使用`j`个技能点能达到的最大威力值。内存限制:256.0MB C/C++时间限制:1.0s Java时间限制:3.0s Python时间限制:5.0s。之后的n-1行,每行两个数x,y,表示y技能的前提技能是x,也就是说先学第x个技能才能学弟y个技能。一个数,最大的威力值。

weixin_74034112的博客 401

Allegro174版本如何关闭模块复用后铜皮自动从动态变成静态操作指导

在用Allegro进行PCB设计的时候,模块复用是使用的十分频繁的操作,当Allegro升级到了174 S034版本的时候,当使用模块复用的功能的时候,模块内的铜皮会自动动静转换,大部分情况是不需要的。版本如何关闭模块复用后铜皮自动从动态变成静态操作指导。如何关闭这个功能,具体操作如下。

weixin_54787054的博客 1261

Camera2Demo

在Camera2 的基础上进行封装,使得Camera2一堆初始化逻辑与Activity分离,降低耦合度,完成预览拍照并保存的操作

蓝桥杯国赛C/C++真题解析:算法思维与实战技巧深度复盘

算法是计算机科学的核心,它通过一系列明确的指令解决特定问题或执行计算。其原理在于将复杂问题分解,并利用数据结构(如数组、树、图)高效组织数据,通过搜索、动态规划、贪心等策略寻找最优或可行解。掌握算法能极大提升程序的效率与性能,是解决大数据处理、人工智能、系统优化等高端技术问题的基石。在编程竞赛如蓝桥杯中,算法能力更是直接的考察重点。本文以2020年蓝桥杯C/C++大学C组国赛试题为切入点,深入剖析其中涉及的动态规划、广度优先搜索(BFS)等核心算法在竞赛场景下的应用与变形,并结合区间DP、状态空间搜索等具体

weixin_34293246的博客 515

jdk-8u144-linux-x64.tar.gz.

该资源为搭建Linux系统Java环境用,资源的后缀为tar.gz格式的压缩包

蓝桥杯国赛A组试题深度解析:从问题抽象到算法优化的实战指南

算法竞赛的核心在于将现实问题转化为可计算的数学模型,这一过程涉及问题抽象、算法选型与优化。动态规划通过定义状态和转移方程解决具有最优子结构的问题,而深度优先搜索和广度优先搜索则用于状态空间中的路径寻找,两者都需要结合剪枝等优化策略以应对大数据规模。在工程实践中,清晰的代码结构、严谨的边界处理以及对数据范围和复杂度的敏感度,是保证算法高效正确实现的关键。本文以2018年蓝桥杯国赛A组试题为切入点,深入剖析了动态规划的状态设计与搜索算法中的剪枝技巧,为备赛者提供了从读题建模到编码调试的完整方法论,助力提升解决复

weixin_34239169的博客 321

文档:亲测可用解决vnc灰屏,黑屏,鼠标大黑叉情况

主要解决vnc-viewer灰屏,黑屏,鼠标大黑叉等现象,详细见文档。

蓝桥杯国赛Java B组真题深度解析:从螺旋折线到算法实战

算法竞赛是检验编程与问题解决能力的重要场景,其核心在于将复杂问题抽象为可计算的模型,并运用高效算法求解。动态规划、深度优先搜索(DFS)、广度优先搜索(BFS)等是解决最优化与路径搜索问题的关键技术,它们通过状态定义与递推关系,在有限时间内找到最优解或可行解,在资源分配、路径规划等工程领域价值巨大。本文以蓝桥杯国赛经典真题“螺旋折线”为切入点,深入剖析如何将抽象的坐标变换问题,通过数学建模转化为O(1)时间复杂度的公式求解,并系统梳理了包括**动态规划**、**DFS回溯**在内的核心算法考点与考场避坑指南

weixin_33906657的博客 381

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

已经通过蓝桥杯100%测试案例,如果发现哪里还可以优化,希望大家指出。

qq_55364042的博客 1281

蓝桥杯 算法训练 逗志芃的危机(Java)

蓝桥杯 算法训练 逗志芃的危机(Java)

Lucas的博客 631

蓝桥杯| 备赛练习题+知识点合集

文章目录[知识点] 两个数的最小公倍数&最大公因数[判断一个数是否为素数][2017真题]k倍区间[2020填空]路径[2017填空] :纸牌三角形[2020 七段码][2018]字母阵列[2015填空]三羊献瑞逗志芃的危机幸运的店家礼物 算法常见的考点和刷题记录 [知识点] 两个数的最小公倍数&最大公因数 约分法: a*b = (这两个数的最大公因数)* (这两个数的最小公倍数) 假设a=18,b=30,要求最小公倍数。 最大公因数: 6 最小公倍数:90 a*b=540 可以看到18

zzzlueng的博客 10万+

蓝桥杯——逗志芃的暴走 (C++)

题目来源:蓝桥杯算法训练 知识点:搜索、Floyd算法 问题描述   逗志芃是有妹子的现充,但是有时候妹子就是烦恼。因为逗志芃太逗了,所以这段时间妹子对逗志芃发动了技能无理取闹,妹子要去玩很多的景点。由于逗志芃之前抽机花费了太多的时间,不久以后又要微积分考试了,所以现在被妹子搞成暴走状态了。但是妹子永远是上帝,所以逗志芃只能带妹子出去玩,不过为了节约时间,他希望找到一条花费时间最少的一次性游览线路。 输入格式   第一行1个数n,表示逗志芃所在的城市有多少个景点,接下来是一个n*n的矩阵。a(i,j)表示

weixin_45688536的博客 1648

试题 算法训练 逗志芃的危机

dp

Solar_angel的博客 777

蓝桥杯算法训练-逗志芃的危机

 逗志芃的危机

fuzekun的博客 2077

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

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

fuzekun的博客 1225
上一篇: 蓝桥杯 试题 基础练习 分解质因数(C++)
下一篇: 蓝桥杯 试题 算法训练 区间最大和 (C++)
ghost_him
博客等级 码龄6年 598粉丝 90原创
评论 23
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值