【蓝桥杯每日一题】技能升级

技能升级

2024-12-10 蓝桥杯每日一题 技能升级 二分

题目大意

一个角色有 N 种可以增加攻击力的技能,对于第 i 个技能首次升级可以提升 A i A_i Ai 点攻击力,随后的每次升级增加的攻击力都会减少 B i B_i Bi 。升级 ⌈ A i B i ⌉ \lceil \frac{A_i}{B_i} \rceil BiAi (向上取整)的次数之后就不会再升级。

最终小蓝可以总计升级 M 次技能,计算这个角色最后可以体高多少攻击力?

解题思路

以下分为两点来讲解,一个 40 分,一个100分。

40 分

对于蓝桥杯来说,暴力拿分是一定要会的。

对于这个题来说,每一个技能的提升都是一个递减的等差数列,然后想要在M次升级中让这个角色的攻击力得到最大的提升,必须要找到前 M 个大的升级点即可。那么可以通过将这些攻击力的提升点进行一个总的排序,然后去前 M 个的总和即可。

但是随着数据量的增加这个排序就会超时。

#include <bits/stdc++.h>using namespace std;
typedef long long ll;vector<int> a;bool cmp(int a,int b) {return a > b;
}int main()
{int n,m;cin>>n>>m;for(int i = 1;i <= n;i++) {int aa,bb;cin>>aa>>bb;int k = (aa+bb-1)/bb;while(k--) {a.push_back(aa);aa -= bb;}}sort(a.begin(),a.end(),cmp);ll res = 0;for(int i = 0;i < m;i++) {res += a[i];}cout<<res<<endl;return 0;
}
Accepted

继续延续之前的一个思路,取前 M 个大的数。那么我们就需要找到第 M 个大的数然后分别找到每一个技能可以升级多少次即可。
那么最关键的就是找到这个第 M 个大的数,这时候就引入二分查找来找到这个数,这个二分查找类似二分答案的一种,但是还要进行一个修改。因为是等差数列,所以对于每个数列来说可以通过 O(1) 的时间找到 大于 那个第 M 个大的数的一个数量。

在计算的时候,会存在一个边界取值的一个情况,我们的处理就是找到所有大于等于 X 的值的一个数量,最后会处理多于或者少于 M 次 的边界值个数。

#include <bits/stdc++.h>using namespace std;
const int N = 100010;
typedef long long ll;
ll A[N],B[N],n,m;bool check(ll x) {ll cnt = 0;for(int i = 1;i <= n;i++) {if(A[i] < x) continue;ll t = (A[i] - x) / B[i];cnt += t+1;}if(cnt >=  m) return true;else return false;
}int main()
{cin>>n>>m;for(int i = 1;i <= n;i++) cin>>A[i]>>B[i];ll l = 0, r = 1e6+10;while(l < r) {ll mid = (l + r + 1) >> 1;if(check(mid)) {l = mid;} else r = mid - 1;}ll x = l;ll cnt = 0,sum = 0;for(int i = 1;i <= n;i++) {if(A[i] < x) continue;ll t = (A[i] - x)/B[i];if(t*B[i] <= A[i]-x) t++;cnt += t;sum += (A[i] + (A[i] - (B[i]*(t-1))))*t/2;}sum += (m-cnt)*x;cout<<sum<<endl;return 0;
}
备注

想要一起备赛的小伙伴可以看评论区添加讨论群!

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

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

相关文章

uniapp -- 实现页面滚动触底加载数据

效果 首选,是在pages.json配置开启下拉刷新 {"path": "pages/my/document/officialDocument","style": {"navigationStyle":</

角色动起来

GitHub - LordLiang/DrawingSpinUp: (SIGGRAPH Asia 2024) This is the official PyTorch implementation of SIGGRAPH Asia 2024 paper: DrawingSpinUp: 3D Animation from Single Character Drawings

MySQL 时区参数 time_zone 详解

文章目录 前言1. 时区参数影响2. 如何设置3. 字段类型选择 前言 MySQL 时区参数 time_zone 有什么用&#xff1f;修改它有什么影响&#xff1f;如何设置该参数&#xff0c;本篇文章会详细介绍。 1. 时区参数影响 time_zone 参数影响着 MySQL 系统函数还有字段的 DEFAULT CUR…

【信息系统项目管理师】论文:论信息系统项目的整合管理

文章目录 正文一、制定项目章程二、指定项目管理计划三、指导与管理项目工作四、管理项目知识五、监控项目工作六、实施整体变更控制七、结束项目或阶段 正文 根据省自然资源厅的总体部署&#xff0c;XX市决定于2023年8月开始全市不动产登记系统建设&#xff0c;要求在2024年8…

漫谈前端:2025年框架是该选vue还是react?

相信很多前端小伙伴都有过纠结的时候&#xff0c;开始一个项目的时候是该选vue还是react。很多情况下&#xff0c;都是根据团队现有框架延续&#xff0c;或者是自身数量度。渐渐的公司组件和规范全基于某一种框架&#xff0c;虽然很爽但Allin难掉头。本文就浅浅的比较下vue和re…

导游现场面试需要注意的问题

今天给大家带来一些导游现场面试需要注意的问题&#xff0c;大部分的城市导游考试已经考完了&#xff0c;但是还有一些城市的十二月份才考&#xff0c;有需要的朋友们赶紧来看&#xff0c;有备无患。 01、做好充足准备 认真准备做好每个景点的讲解介绍&#xff0c;不要抱有侥幸…

SQL 查询中的动态字段过滤

这段代码是一个 SQL 查询中的动态字段过滤部分&#xff0c;使用了 MyBatis 的 标签和 标签。以下是逐步的解释&#xff1a; <!-- 动态字段过滤 --><if test"parameters ! null and parameters.size() > 0"><foreach collection"parameters&qu…

Java 中枚举的 toString 方法及其字段信息展示

在 Java 编程中&#xff0c;枚举&#xff08;enum&#xff09;是一种特殊的数据类型&#xff0c;用于定义一组固定的常量。枚举类型不仅限于简单的常量定义&#xff0c;还可以包含字段、方法以及构造函数&#xff0c;从而使其具备更强的表达能力。toString 方法是 Java 中所有对…

【ubuntu】将Chroma配置为LINUX服务

Chroma是一个轻量级向量数据库。既然是数据库&#xff0c;那么我希望它是能够长时间运行。最直接的方式是配置为service服务。 可惜官方没有去提供配置为服务的办法&#xff0c;而鄙人对docker又不是特别感冒。所以自己研究了下chroma配置为服务的方式。 系统&#xff1a;ubu…

Linux vi/vim 编辑器使用教程

Linux vi/vim 编辑器使用教程 引言 Linux 系统中的 vi 和 vim 是非常强大的文本编辑器&#xff0c;它们以其高效性和灵活性而闻名。vim 是 vi 的增强版&#xff0c;提供了更多的功能和改进的用户界面。本文将详细介绍 vi/vim 的基本用法&#xff0c;包括打开文件、编辑文本、…

PageHelper自定义Count查询及其优化

PageHelper自定义Count查询及其优化 文章目录 PageHelper自定义Count查询及其优化一&#xff1a;背景1.1、解决方法 二&#xff1a;利用反射判断请求参数是否有模糊查询2.1、分页不执行count2.2、思路2.3、代码示例 三&#xff1a;自定义COUNT查询SQL(只适用于单表)3.1、局限性…

TPAMI 2023:When Object Detection Meets Knowledge Distillation: A Survey

摘要 目标检测&#xff08;Object Detection&#xff0c;OD&#xff09;是计算机视觉中的一项关键任务&#xff0c;多年来涌现出了众多算法和模型。尽管当前 OD 模型的性能有所提升&#xff0c;但它们也变得更加复杂&#xff0c;由于参数规模庞大&#xff0c;在工业应用中并不…

ZED相机应用

下载SDK wget https://stereolabs.sfo2.cdn.digitaloceanspaces.com/zedsdk/3.6/ZED_SDK_Ubuntu18_cuda11.5_v3.6.5.run 安装 ./ZED_SDK_Ubuntu18_cuda11.5_v3.6.5.run skip_python 测试 cd /usr/local/zed/tools ls ZED_Calibration ZED_Depth_Viewer ZED_Diagnostic ZED_E…

农业园区气象站

农业园区气象站是一种专为农业生产和科研设计的气象监测设备&#xff0c;它集成了多种传感器和技术&#xff0c;用于实时、准确地监测和记录农业园区内的气象数据。以下是农业园区气象站的主要功能和用处&#xff1a; 一、主要功能 实时监测&#xff1a;农业园区气象站能够实时…

Unity3D项目为什么要使用FairyGUI

前言 Unity3D项目选择使用FairyGUI的原因是多方面的&#xff0c;主要涵盖性能优化、设计模式、编辑器支持、跨平台兼容性以及丰富的功能特性。以下是对这些方面的详细解析以及相关的代码实现。 对惹&#xff0c;这里有一个游戏开发交流小组&#xff0c;希望大家可以点击进来一…

编译问题 fatal error: rpc/rpc.h: No such file or directory

在编译一些第三方软件的时候&#xff0c;会经常遇到一些文件识别不到的问题&#xff0c;这里整理下做个归总。 目前可能的原因有&#xff08;排序分先后&#xff09;&#xff1a; 文件不存在&#xff1b;文件存在但路径识别不了&#xff1b;…… 这次以常见的编译lmbench测试…

设计模式的艺术读书笔记

设计模式的艺术 面向对象设计原则概述单一职责原则开闭原则里氏代换原则依赖倒转原则接口隔离原则合成复用原则迪米特法则 创建的艺术创建型模式单例模式饿汉式单例与懒汉式单例的讨论通过静态内部类实现的更好办法 简单工厂模式工厂方法模式重载的工厂方法工厂方法的隐藏工厂方…

Spring Boot中使用YAML配置文件

1. YAML 文件结构和语法 缩进与层次 YAML使用缩进来表示层级关系。每个层级的元素必须比它的父级多一个空格或Tab&#xff08;推荐使用空格&#xff09;。例如&#xff1a; server:port: 8080address: localhost 列表与映射 列表用 - 开头&#xff0c;映射则用 key: value…

python模拟练习第一期

问题一 如果一个数 p 是个质数&#xff0c;同时又是整数 a的约数&#xff0c;则 p 称为 a的一个质因数。 请问 2024 有多少个质因数&#xff1f; 步骤 1: 分解 2024 首先&#xff0c;2024 是偶数&#xff0c;说明可以被 2 整除。我们从 2 开始进行除法分解&#xff1a; 202…

element-plus的el-tree的双向绑定

el-tree改造了下 可选可取消 有默认值 不包含父级id&#xff08;也可打开注释 包含父级id&#xff09; 默认展开 点击节点也可触发选择 节点内容自定义 <template><div class"absolute"><el-scrollbar class"pall"><div class"…