【蓝桥】通关

news2024/9/21 12:24:38

1、题目

问题描述

游戏“蓝桥争霸”由很多关卡和副本组成,每一关可以抽象为一个节点,整个游戏的关卡可以抽象为一棵树形图,每一关会有一道算法题,只有当经验值不低于 i i i 关的要求 k i k_i ki 时,小蓝才能挑战成功通过此关,并且获得 s i s_i si 的经验值,每关的经验值只能获得一次。每个关卡(除了 1 号点)都会有一个前置关卡,只有通过了前置关卡,才能挑战后续关卡。

小蓝初始在 1 号点,也就是游戏开局初始点,同时具有一个初始经验值 P P P,它可以任何规划挑战顺序,想问你最多能够挑战成功多少道题。

小蓝会告诉你关卡的所有信息,以及他的初始经验值,你需要回答他组多能够挑战成功多少关卡。

输入格式

第一行输出两个整数 n , P n, P n,P,表示关卡的数量以及小蓝的初始经验值。

接下来 n n n 行,每行输入三个整数 f i , s i , k i f_i, s_i, k_i fi,si,ki f i f_i fi 表示每一关的前置关卡( f 1 f_1 f1 一定为0), s i s_i si 表示经验值, k i k_i ki 表示挑战成功最少需要的经验值。

输出格式

一个整数,表示在最优的规划下,最多能挑战成功的关卡数量。

样例输入

4 5
0 3 5
1 2 8
1 3 9
3 1 15

样例输出

3

说明

游戏地图如下:
在这里插入图片描述
小蓝初始在 1 号关卡,初始经验为 5。每个关卡具有挑战前提:1 号关卡可以直接挑战,如果要挑战 2 号关卡,必须通过 1 号关卡,3,4 号关卡类似。

小蓝的一种挑战顺序如下:

  1. 由于初始经验为 5,满足 1 号关卡要求,所以可以直接挑战成功 1 号关卡,获得 3 经验值,此时经验值为 8,并且获得挑战 2,3号关卡的机会。
  2. 此时经验为 8,满足 2 号关卡要求,但是不满足 3 号要求,所以可以直接挑战成功 2 号关卡,获得 2 经验值,此时经验值为 10。
  3. 此时经验为 10,满足 3 号关卡要求,所以对 3 号关卡挑战成功,获得 3 经验值,此时经验值为 13,并且获得挑战 4 号关卡的机会。
  4. 此时经验为 13,小于 4 号关卡要求,所以无法成功挑战 4 号关卡,游戏无法继续。

数据范围

f 1 = 0 < f i ≤ n ≤ 1 0 5 , 0 ≤ P , s i , k i ≤ 1 0 9 f_1 = 0 \lt f_i \le n \le 10^5, 0 \le P, s_i,k_i \le 10^9 f1=0<fin105,0P,si,ki109

数据保证输入为一棵树,并且根节点为 1。

原题链接

通关

2、思路

考察堆的数据结构 (STL的优先队列)

维护一个小根堆,每个节点维护两个值:节点编号和节点需要的经验值(或者说是难度),以难度为关键字建立小根堆(或者使用优先队列),通过节点 u u u 后,将 u u u 的所有直系儿子放入小根堆,每次取出最小难度的题目进行尝试,成功完成后获得奖励经验,并且将该节点的后续节点加入小根堆中,如此反复即可。

时间复杂度: O ( n l o g n ) O(n log n) O(nlogn)

在这里插入图片描述

3、代码

#include <iostream>
#include <vector>
#include <cstring>
#include <algorithm>
#include <queue>
#include <assert.h>

using namespace std;

typedef long long ll;
const int N = 1e5+100;
const int MOD = 998244353;

typedef pair<int, int> Pair;

vector<int> G[N];
int S[N], K[N];
int n, P;
int cnt = 0, vis[N];

void sol() {
    int f;
    cin >> n >> P;
    for (int i = 1; i <= n; ++i) {
        cin >> f >> S[i] >> K[i];
         G[f].push_back(i);
    }

    priority_queue<Pair, vector<Pair>, greater<Pair> > q;
    q.push({0, 0});
    int ccnt = -1;
    while (!q.empty()) {
        if (P >= q.top().first) {
            ccnt ++;
            Pair tmp = q.top();
            q.pop();
            P += S[tmp.second];
            for (int v : G[tmp.second]) {
                q.push({K[v], v});
            }
        } else {
            break;
        }
    }
    cout << ccnt << '\n';
}

int main() {
    sol();
    exit(0);
}

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1132533.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

SAP-怎么查一个工艺路线抬头特性值用在了哪个工艺路线里

起因 在DEV里写了个报表&#xff0c;用生产订单关联工艺路线&#xff0c;关联特性值的时候发现特性值维护的和PRD里不一样&#xff0c;PRD里&#xff0c;这个特性值在“值”标签里定义了选项&#xff0c;而DEV里却没有&#xff0c;于是乎就想把它补过来。然而保存存的时候报错…

Echarts 实现 设备运行状态图(甘特图) 工业大数据展示

let option{tooltip: {formatter: function (params) {let startTime new Date(params.value[1])let endTime new Date(params.value[2]);//北京时间/时间戳转成日常时间function convert(date){var y date.getFullYear();var m date.getMonth() 1;m m < 10 ? "0…

基于边缘智能网关的储能系统安全监测管理方案

“储能系统充电”是配套新能源汽车产业发展的重要应用之一。得益于电池技术的发展&#xff0c;新能源汽车正逐步迈入快充时代&#xff0c;由于在使用快速充电桩时&#xff0c;可能导致用电峰值负荷超过电网的承载能力&#xff0c;对于电网的稳定性和持续性会有较大影响&#xf…

【智能大数据分析】实验1 MapReduce实验:单词计数

【智能大数据分析】实验1 MapReduce实验&#xff1a;单词计数 文章目录 【智能大数据分析】实验1 MapReduce实验&#xff1a;单词计数一、实验目的二、实验要求三、实验原理1 MapReduce编程2 Java API解析 四、实验步骤1 启动Hadoop2 验证HDFS上没有wordcount的文件夹3 上传数据…

云安全-对象存储安全(配置错误,域名接管,AK泄露)

0x00 云安全-对象存储 云安全厂商分类&#xff1a;阿里云&#xff0c;腾讯云&#xff0c;华为云&#xff0c;亚马逊云等 云厂商所对应的云服务包括&#xff1a;对象存储&#xff0c;云数据库&#xff0c;弹性计算服务&#xff08;云主机&#xff09;&#xff0c;云控制台 各厂…

桃花峪滑雪场租赁系统 JAVA开源项目 毕业设计

目录 项目介绍 项目下载 项目截图 项目介绍 基于JAVAVueSpringBootMySQL的桃花峪滑雪场租赁系统&#xff0c;包含了滑雪场、门票预定、滑雪教练聘请、器材租赁归还、规章制度等模块&#xff0c;分为管理后台和微信小程序端&#xff0c;还包含系统自带的用户管理、部门管理、…

加上boot程序,FreeRTOS就跑不起来了

一、问题描述 bootloader跳转到APP时&#xff0c;app执行完初始化程序后死机 二、分析问题 第一步&#xff0c;执行app时死机死到哪里&#xff1f;通过DEBUG调试发现死到hardfault_handler()函数中&#xff0c;硬件错误&#xff0c;导致硬件错误的原因一般都是中断异常引起的。…

上云容灾如何实现碳中和-万博智云受邀参加1024程序员节数据技术论坛并发表演讲

近日&#xff0c;2023长沙中国1024程序员节在长沙召开。 长沙中国1024程序员节继2020年后已成功连续举办三届&#xff0c;逐步成为 IT 行业引领技术前沿、推动应用创新发展的高影响力年度盛会。是 IT 领域新技术、新产品、新服务的重要发布平台。 万博智云CEO Michael受邀参加…

信息检索与数据挖掘 | 【实验】排名检索模型

文章目录 &#x1f4da;实验内容&#x1f4da;相关概念&#x1f4da;实验步骤&#x1f407;分词预处理&#x1f407;构建倒排索引表&#x1f407;计算query和各个文档的相似度&#x1f407;queries预处理及检索函数&#x1f525;对输入的文本进行词法分析和标准化处理&#x1f…

微信小程序设置 wx.showModal 提示框中 确定和取消按钮的颜色

wx官方提供的 showModal 无疑是个非常优秀的选择提示工具 但是 我们还可以让他的颜色更贴近整体的小程序风格 cancelColor 可以改变取消按钮的颜色 confirmColor 则可以控制确定按钮的颜色 参考代码如下 wx.showModal({cancelColor: #0000FF,confirmColor: #45B250,content:…

C++中显示构造和隐式构造

截图来源于C primerplus 第六版。

apple-app-site-association nginx

项目里面配置 applinks: 域名 eg: baidu.com 2. 创建 apple-app-site-association 文件&#xff0c;无json等后缀名 eg&#xff1a; appID 构成 teamId bundleId {"applinks": {"apps": [],"details": [{"appID": "2TEAM6D5.…

C#的DataGridView数据控件(直接访问SQL vs 通过EF实体模型访问SQL)

使用DataGridView控件可以快速地将数据库中的数据显示给用户&#xff0c;并且可以通过DataGridView控件直接对数据进行操作&#xff0c;大大增强了操作数据库的效率。DataGridView控件提供一种强大而灵活的以表格形式显示数据的方式。 既可以通过编程直接访问SQL &#xff0c;也…

C语言进阶第九课 --------动态内存管理

作者前言 &#x1f382; ✨✨✨✨✨✨&#x1f367;&#x1f367;&#x1f367;&#x1f367;&#x1f367;&#x1f367;&#x1f367;&#x1f382; ​&#x1f382; 作者介绍&#xff1a; &#x1f382;&#x1f382; &#x1f382; &#x1f389;&#x1f389;&#x1f389…

我国有多少个港口?

港口是什么&#xff1f; 港口是海洋运输中不可或缺的重要设施之一&#xff0c;是连接陆路和水路运输的重要节点。港口通常是指位于沿海地区的水陆交通枢纽&#xff0c;是船舶停靠、装卸货物、储存物资和维修船只的场所。港口一般由码头、泊位、仓库、货场、客运站等设施组成&a…

上海市道路数据,有63550条数据(shp格式和xlsx格式)

数据地址&#xff1a; 上海市道路https://www.xcitybox.com/datamarketview/#/Productpage?id391 基本信息. 数据名称: 上海市道路数据 数据格式: Shpxlsx 数据时间: 2020年 数据几何类型: 线 数据坐标系: WGS84坐标系 数据来源&#xff1a;网络公开数据 数据字段&am…

Aspera和Aspera_cli软件的安装和使用

Aspera和Aspera_cli软件的安装和使用 Aspera和Aspera_cli软件NCBI数据库和EBI-ENA数据库的下载用户和地址信息1. ASpera 4.X.X1.1 ASpera 4.X.X安装1.2 ASpera 4.X.X密钥文件1.3 ASpera 4.X.X简单使用 2. ASpera 3.X.X2.1 ASpera 3.X.X安装2.2 ASpera 3.X.X密钥文件2.3 ASpera …

有了这个交付系统,微生态与代谢组关联分析更轻松

关联分析有多火自不必多说。组学关联策略也是当下研究生物学问题的热门方式&#xff0c;不仅可以实现单组学的数据挖掘&#xff0c;还可深入研究不同组学数据间的关联和因果关系。代谢组作为最接近生物学表型的一种组学&#xff0c;将其与16s所获得的物种丰度进行关联&#xff…

全球PML_V2陆地蒸散发与总初级生产力数据集

简介 全球PML_V2陆地蒸散发与总初级生产力数据集&#xff0c;包括总初级生产力&#xff08;gross primary product, GPP&#xff09;&#xff0c;植被蒸腾&#xff08;vegetation transpiration, Ec&#xff09;&#xff0c;土壤蒸发&#xff08;soil evaporation, Es&#xf…