携程2025秋招0919笔试详细解答C++

这里写目录标题

  • 计算网格内走k步获取的最大价值
  • 选m个极差不超过k的数消掉最小的数,求剩余最少的数字数量
  • 选k个长度不超过l的区间改变数字,求最后剩余的最小数字

计算网格内走k步获取的最大价值

一个 n x m 的网格图 a,左上角为(0,0),右下角为(n-1,m-1),格子 (i,j) 价值为 i * m + j。
游游从左上角 (0,0) 为起点,每一步可以走到上下左右四个方向的相邻格子。
每到达一个格子,就能获取相应格子的奖励。
需要注意的是,在到达某个格子获取宝物后,这个格子的宝物会在游游离开格子后再次刷新。
现在给出一个整数 k,表示游游最多走 k 步。问:游游最多能获得多少价值的宝物?
输入:
第一行输入 q(1 <= q <= 10 ^ 5),表示询问个数。
接下来 q 行,每行输入 n,m,k (1 <= n, m, k <= 10^4, n + m > 2),表示矩阵大小和限制步数。

思路非常直白,先下再右再左右横跳,无论是下还是右都可以用等差数列求解,至于左右横跳只需要分奇偶

//先往下走,再往右走,再左右横跳
#include <iostream>
using namespace std;
#define ll long long
void solve() {int n, m, k;cin >> n >> m >> k;ll ans = 0;//可以到达底部if (k >= n - 1) {ans = n * m / 2 * (n - 1) * 1ll;k -= (n - 1);}else {ans = k * m * (k + 1) / 2 * 1ll;k = 0;}//可以走到最右侧int last = (n - 1) * m;//最后一行第一个格子的宝藏if (k >= m - 1) {ans += (last + 1 + last + m - 1) * (m - 1) / 2 * 1ll;k -= (m - 1);}else {ans += (last + 1 + last + k) * k / 2 * 1ll;k = 0;}//需要反复横跳last = n * m - 1;//最后一行最后一个格子的宝藏int pre = last - 1;//last的前一个格子if (k > 0) {//如果k是偶数,那么last和pre都可以被访问k/2次if (k % 2 == 0) ans += k / 2 * (last + pre);else ans += (k + 1) / 2 * pre + k / 2 * last;}cout << ans << endl;}int main() {int t;cin >> t;while (t--) {solve();}
}

选m个极差不超过k的数消掉最小的数,求剩余最少的数字数量

游游在黑板上写下了 n 个数字,构成了一个可重集合。
游游请你参与一个游戏 :
每轮操作你可以任选集合中**最大值和最小值的差不超过 k **的 m 个数字,
然后删去这 m 个数字中的最小值(删除一个),
并把其他的数字放回集合中。
若无法选出符合条件的m个数,则无法继续操作。
你可以无限次进行这个操作,直到没法操作为止。
要使得最后留下的数最少,请你求出操作后留下的最少的数字数量。
输入:
第一行三个整数n,m,k (2 <= m <= 106, 0 <= k <= 109)
第二行输入n个整数
输入:
4 3 3
1 2 3 6
输出:
3

题目看几遍都没看懂
看懂之后感觉自己很傻逼
每轮操作你可以任选集合中最大值和最小值的差不超过 k 的 m 个数字
这段话咱像分析英语句子一样给他拆开,形容词给他不要了
每轮操作你可以任选集合中最大值和最小值的差不超过 k 的 m 个数字
什么意思?让你维护一个长度为m的数组啊!

eg:
输入:
4 3 3
1 2 3 6
n = 4,m = 3,k = 3,有4个数,每次操作选3个,最大值和最小值的差不超过3

  • {1,2,3}它们的最大值和最小值之差是 3 - 1 = 2,符合条件。删掉1,剩下{2, 3, 6}
  • {2, 3, 6},无法再选择出符合条件的 3 个数字(因为 6 - 2 = 4,超过 k = 3),游戏结束。

eg:
输入:
5 3 2
5 4 4 2 1
{5, 4, 4, 2, 1},排序后变成 {1, 2, 4, 4, 5}

  • {1, 2, 4},最大值与最小值的差是 4 - 1 = 3,不符合条件。
  • {2, 4, 4},最大值与最小值的差是 4 - 2 = 2,符合条件。删掉 2,剩下 {4, 4, 5}。
  • {4, 4, 5},最大值与最小值的差是 5 - 4 = 1,符合条件。删掉 4,剩下 {4, 5}。游戏结束。最后是{1,4,5},答案3。

无语死了家人们,看不懂题做一天,看懂题三分钟

#include <iostream>
#include <vector>
#include <algorithm>
using namespace std;int main() {int n, m, k;cin >> n >> m >> k;vector<int> a(n);for (int i = 0; i < n; i++) {cin >> a[i];}sort(a.begin(), a.end()); // 从小到大排序int ans = n;//维护一个定长数组for (int i = 0; i <= a.size() - m; i ++) {if (a[i + m - 1] - a[i] <= k) ans--;}cout << ans;
}

选k个长度不超过l的区间改变数字,求最后剩余的最小数字

游游有个 n 人组成的合唱团,第 i 个人的能力值为 ai 。现在将 n 个人排成一排,游游有 k 次训练的机会,让不超过 l 个连续的人能力人变为任意值。如果合唱团的实力是所有人能力值的最小值。你可以帮助游游求出合唱团的实力的最大值是多少吗?
输入描述:
第一行三个整数n,k,l,表示人数,训练次数,每次训练的最大长度。(2 <= n <= 10^5, 1 <= k * l < n) 第二行n个整数ai,表示第i个人的能力值为ai(1 <= ai <= 1e9)

背景:
合唱团n个人,每个人能力值a[i],合唱团的实力定义为合唱团中所有人的最小能力值、
你有k次训练机会,每次可以改变连续l个人的能力值,改变之后可以是任意值,你希望合唱团整体实力尽可能高。
目标:
通过k次训练,让合唱团的最小能力值尽可能地大

思路:
先排序一个a,保留原始数组b
在排过序的数组a中二分法找中间值,当做可能答案一个个试
假设当前mid就是最终的最小数,用check函数去判断,能不能以原数组为基础,将所有小于当前mid值的元素都提高
如果可以,先保留res,增加mid,即left+1
如果不能,就减小mid,即right-1

至于check函数,起始位置i,一个个试,
当前i值小于参数传递来的val,说明需要训练,标记训练++,i跳l个位置
当前i值大于参数传递来的val,说明不需要训练,i++
把所有元素试完,最后返回训练次数小于等于k


#include <iostream>
#include <vector>
#include <algorithm>
using namespace std;
int n, k, l;
int res;
bool check(vector<int>& b, int val) {// 假设这个函数检查能否通过至多 k 次训练,让所有人的能力至少为 valint need_trainings = 0;int i = 0;while (i < n) {if (b[i] < val) {need_trainings++;i += l;}else {i++;}}return need_trainings <= k;
}
int main() {cin >> n >> k >> l;vector<int> a(n, 0);vector<int> b(n, 0);for (int i = 0; i < n; i++) {cin >> a[i];b[i] = a[i];}sort(a.begin(), a.end());int left = 0, right = a.size() - 1;while (left <= right) {int mid = left + (right - left) / 2;if (check(b, a[mid])) {res = mid;//先保留这一版本的resleft = mid + 1;}else {right = mid - 1;}}cout << a[res];
}

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

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

相关文章

无人机集群路径规划:麻雀搜索算法(Sparrow Search Algorithm, SSA)​求解无人机集群路径规划,提供MATLAB代码

一、单个无人机路径规划模型介绍 无人机三维路径规划是指在三维空间中为无人机规划一条合理的飞行路径&#xff0c;使其能够安全、高效地完成任务。路径规划是无人机自主飞行的关键技术之一&#xff0c;它可以通过算法和模型来确定无人机的航迹&#xff0c;以避开障碍物、优化…

Spring Boot框架在心理教育辅导系统中的应用

3 系统分析 3.1可行性分析 在进行可行性分析时&#xff0c;我们通常根据软件工程里方法&#xff0c;通过四个方面来进行分析&#xff0c;分别是技术、经济、操作和法律可行性。因此&#xff0c;在基于对目标系统的基本调查和研究后&#xff0c;对提出的基本方案进行可行性分析。…

5、论文阅读:深水下的图像增强

深水下的图像增强 前言介绍贡献UWCNN介绍网络架构残差Residuals块 Blocks网络层密集串联网络深度减少边界伪影网络损失Loss后处理前言 水下场景中,与波长相关的光吸收和散射会降低图像的可见度,导致对比度低和色偏失真。为了解决这个问题,我们提出了一种基于卷积神经网络的…

How can I integrate OpenAI Whisper model into a Kotlin app?

题意: 如何将 OpenAI Whisper 模型集成到 Kotlin 应用程序中&#xff1f; 问题背景&#xff1a; I require guidance on incorporating Whisper OpenAI into my Android application developed with Kotlin in Android Studio. Unfortunately, I havent come across any rele…

【图文详解】什么是微服务?什么是SpringCloud?

目录 一.认识微服务架构 ▐ 微服务带来的挑战 二.微服务解决方案SpringCloud ▐ SpringCloud的版本 ▐ SpringCloud和SpringBoot的关系 ▐ SpringCloud实现方案 Spring Cloud Netfix Spring Cloud Alibaba ▐ Spring Cloud 实现对比 在入门Spring Cloud 之前&#xff…

2024 “华为杯” 中国研究生数学建模竞赛(F题)深度剖析|X射线脉冲星光子到达时间建模|数学建模完整代码+建模过程全解全析

当大家面临着复杂的数学建模问题时&#xff0c;你是否曾经感到茫然无措&#xff1f;作为2022年美国大学生数学建模比赛的O奖得主&#xff0c;我为大家提供了一套优秀的解题思路&#xff0c;让你轻松应对各种难题&#xff01; CS团队倾注了大量时间和心血&#xff0c;深入挖掘解…

稀土抗紫外屏蔽剂在涂层中的应用

稀土抗紫外屏蔽剂的主要作用是有效地吸收或阻挡紫外线&#xff0c;从而保护材料或表面免受紫外线的伤害&#xff0c;延长其使用寿命。 稀土抗紫外屏蔽剂在涂层上的应用具有以下显著优势&#xff1a; 1. 增强涂层的耐久性&#xff1a;稀土抗紫外屏蔽剂能够有效吸收和散射紫外线…

无人机集群路径规划:雾凇优化算法( rime optimization algorithm,RIME)求解无人机集群路径规划,提供MATLAB代码

一、单个无人机路径规划模型介绍 无人机三维路径规划是指在三维空间中为无人机规划一条合理的飞行路径&#xff0c;使其能够安全、高效地完成任务。路径规划是无人机自主飞行的关键技术之一&#xff0c;它可以通过算法和模型来确定无人机的航迹&#xff0c;以避开障碍物、优化…

Lubuntu电源管理

lxqt-config-powermanagement 打开托盘图标 Show icon 电源管理 电源管理管理笔记本电脑电池的低电量、关闭笔记本电脑盖的操作以及计算机长时间闲置时应采取的措施。 用法 LXQt 电源管理会监控您的电池、笔记本电脑盖、空闲情况&#xff0c;以及当您按下电源或睡眠按钮时会发…

Linux根文件系统构建

直接参考【正点原子】I.MX6U嵌入式Linux驱动开发指南V1.81 本文仅作为个人笔记使用&#xff0c;方便进一步记录自己的实践总结。 Linux“三巨头”已经完成了 2 个了&#xff0c;就剩最后一个 rootfs(根文件系统)了&#xff0c;本章我们就来学习一下根文件系统的组成以及如何构建…

数模打怪(七)之回归分析

一、什么是回归分析 1、回归分析的含义 回归分析&#xff1a;通过研究自变量X和因变量Y的相关关系&#xff0c;尝试去解释Y的形成机制&#xff0c;进而达到通过X去预测Y的目的。 在绝大多数情况下&#xff0c;我们没有能力去探究严格的因果关系&#xff0c;只能通过回归分析…

小米 13 Ultra机型工程固件 资源预览与刷写说明 步骤解析

小米 13 Ultra机型---机型代码为ishtar 。工程固件可以辅助修复格机或者全檫除分区后的基带修复。可以用于修复TEE损坏。以及一些分区的底层修复。此款固件也可以为更换UFS后的底包。 通过博文了解 1💝💝💝-----此机型工程固件的资源分享 下载 刷写注意事项 2💝💝…

加薪非要老总批?——职责链模式

文章目录 加薪非要老总批&#xff1f;——职责链模式加薪代码初步职责链模式职责链的好处加薪代码重构加薪成功 加薪非要老总批&#xff1f;——职责链模式 老板&#xff0c;我要加薪&#xff01; 时间&#xff1a;7月2日20点  地点&#xff1a;小菜、大鸟住所的客厅  人…

奇安信渗透2面经验分享

《网安面试指南》http://mp.weixin.qq.com/s?__bizMzkwNjY1Mzc0Nw&mid2247484339&idx1&sn356300f169de74e7a778b04bfbbbd0ab&chksmc0e47aeff793f3f9a5f7abcfa57695e8944e52bca2de2c7a3eb1aecb3c1e6b9cb6abe509d51f&scene21#wechat_redirect 《Java代码审…

学习笔记——ViT(Vision Transformer)

谷歌团队探索了 Transformer 在图像识别中的直接应用。 Vision Transformer&#xff08;ViT&#xff09;是一种基于Transformer架构的深度学习模型&#xff0c;用于图像识别和计算机视觉任务。与传统的卷积神经网络&#xff08;CNN&#xff09;不同&#xff0c;ViT直接将图像视…

20240921解决使用PotPlayer在WIN10电脑播放4K分辨率10bit的视频出现偏色的问题

20240921解决使用PotPlayer在WIN10电脑播放4K分辨率10bit的视频出现偏色的问题 2024/9/21 10:40 缘起&#xff1a;常见的问题&#xff0c;你下载视频的时候&#xff0c;4K分辨率的视频播放的时候出现偏色异常&#xff0c;但是1080p分辨率的正常呀&#xff01; 偏色的识别&…

华为地图服务 - 如何实现地图数据聚合效果? -- HarmonyOS自学20

场景介绍 本章节将向您介绍如何根据地图数据实现聚合效果。 您可以通过比例尺缩放自适应聚合效果&#xff0c;聚合图标可点击。聚合支持功能&#xff1a; 支持按距离聚合ClusterItem。支持绘制聚合Overlay的默认图标。支持绘制聚合Overlay的自定义图标。支持监听聚合Overlay…

祛“魅”霸王茶姬

“奔着员工福利可以每天喝奶茶去的&#xff0c;我在招聘软件上尝试约了霸王茶姬的面试&#xff0c;想着应该也不会太累&#xff0c;推荐去吗&#xff1f;”一位霸王茶姬的重度爱好者在社交平台发帖问。 茶饮界的“网红”“顶流”&#xff0c;年轻人的“新宠”&#xff0c;霸王…

巴蒂克图案识别系统源码分享

巴蒂克图案识别检测系统源码分享 [一条龙教学YOLOV8标注好的数据集一键训练_70全套改进创新点发刊_Web前端展示] 1.研究背景与意义 项目参考AAAI Association for the Advancement of Artificial Intelligence 项目来源AACV Association for the Advancement of Computer V…