< CSDN周赛解析:第 28 期 >

CSDN周赛解析:第 27 期
- 👉 第一题: 小Q的鲜榨柠檬汁
- > 题目解析
- > 解决方案
- 👉 第二题: 三而竭
- > 解析
- > 解决方案
- > 拓展知识
- 👉 第三题: 隧道逃生
- > 解析
- > 解决方案
- 👉 第四题: 收件邮箱
- > 解析
- > 解决方案
- 往期内容 💨
👉 第一题: 小Q的鲜榨柠檬汁
团建活动是大家所想要的。小Q给大家准备了鲜橙汁。现在有n个朋友买回了k瓶饮料,每瓶有l毫升的饮料,同时还买回了c个柠檬,每个柠檬可以切成d片,p克盐。已知每个朋友需要nl毫升的饮料,一片柠檬,以及np克盐。小Q想知道每个朋友最少可以喝多少杯饮料?
示例:
// 示例
输入 3 4 5 10 8 100 3 1
输出 2
> 题目解析
虽然题目中,变量很多,但是只要理解题目还是很简单能解出来的。
不过题目描述略有一点问题。实际上,是小Q想要知道每个朋友最少可以喝多少杯饮料,其实是要计算每个朋友最多能够喝到多少杯饮料,并且要平均分配,这里实际上是在表达一种期望。否则,如果按照其主观意愿,最少一定可以喝到零杯饮料。
根据题目可以得知,如下数据:
-
水(原料):k 瓶,l 毫升,每份饮料需要 nl 毫升水。一共可以配置
k*l / nl份饮料。 -
柠檬:c 个,每个切 d 片,每份饮料需要 1 片柠檬。一共可以配置 cd/1 份饮料,即 cd 份饮料。
-
盐:p 克,每份饮料需要 np 克盐。一共可以配置
p/np份饮料。
实际可以生产的饮料份数为三种材料配出饮料杯数的最小值。
计算出总份数之后,将饮料平均分给所有人饮用,向下取整,即可得到最终答案。
> 解决方案
具体解析均有注释,方便日后查漏补缺!
class Solution {solution(n, k, l, c, d, p, nl, np) {// 根据材料计算出饮料总杯数, 取所有材料的可以制作饮料杯数的最小值,然后在分给每个人,向下取整let drinkNums = Math.min(Math.floor(k * l / nl), Math.floor(c*d), Math.floor(p/np))return Math.floor(drinkNums / n);}
}
👉 第二题: 三而竭
一鼓作气再而衰三而竭。小艺总是喜欢把任务分开做。小艺接到一个任务,任务的总任务量是n。第一天小艺能完成 x 份任务。第二天能完成x/k,第t天能完成x/(k^(t - 1))。小艺想知道自己第一天至少完成多少才能完成最后的任务。
// 示例
输入 59 9
输出 54
> 解析
根据题目可知, 任务总量 是 随着天数逐天递减, 每天减少份数是 x , x 也是逐天减少, 且 x = x / k。
题目隐藏的限制是每一天可以做完的任务不会是小数,不然连示例也得不到。
然后可以使用 二分查找 去 循环查找满足要求的值, 且因为要取 “ 至少多少天 ” 这个至少值, 所以需要我们去取 1 ~ n 中 能够满足要求的值。
> 解决方案
具体解析均有注释,方便日后查漏补缺!
class Solution {solution(n, k) {// 编写一个用于校验x值是否满足要求的方法const isSuccessX = (x) => {let local_N = nwhile(x > 0 && local_N > 0) {// 通过循环逐天减少对应天数的工作量,直至x 不符合要求 或 工作被完成local_N -= xx = Math.floor(x/k)}return local_N <= 0 ? true : false}}let left = 1, right = nwhile(left < right) {let mid = Math.floor((left + right) / 2)/* 记录每次满足要求的x值,越来越往1取值,取最少完成的x值。 通过从最大x的极限值 n 开始,每mid值运算成功一次,那就刷新一次最小值查找的右边界, 再继续在 left ~ right(更新的mid值)中查找下次满足要求的最小值。*/if(isSuccessX(mid)) right = midelse left = mid + 1}return
}
利用 “ 二分查找 ” 的特性,因为 题目中, x值必定是 1 ~ n中的值, 每次记录满足条件以 right 为界,继续在 left ~right 中查找最小值。
> 拓展知识
< 算法基础 之 二分查找 >
👉 第三题: 隧道逃生
小海豚喜欢打游戏,现在它在操纵游戏人物小C逃脱废弃的隧道,逃生装置在小C的前方 X 米远的位置。但是游戏机只有两个按钮:前进和后退,按前进,小C会前进 m 米,按后退,小C会后退 n 米。小海豚必须设法把小C送到逃生装置上,方能逃离隧道,请你帮帮小海豚,告诉它至少要操作多少次,才能通关。
输入描述:输入三个正整数X、m和n
输出描述:输出一个整数,表示小海豚通关需要操作的次数
// 示例
输入 5 77 157
输出 73
> 解析
用一个变量记录当前角色所在位置。当前位置小于终点位置时,前进;当前位置大于终点位置时,后退。记录操作次数,暴力模拟即可
> 解决方案
具体解析均有注释,方便日后查漏补缺!
class Solution {solution(X, m, n) {let times = 0, currLocal = 0while(currLocal != X) {times++currLocal += currLocal < X ? m : -n}return times;}
}
👉 第四题: 收件邮箱
已知字符串str表示邮箱的不标准格式。其中”.”会被记录成”dot”,”@”记录成”at”。写一个程序将str转化成可用的邮箱格式。可用格式中,字符串除了开头结尾所有”dot”,都会被转换;”at”只会被转化一次,开头结尾的不转化。
// 示例一
输入 mxyatoxcoderdotcom
输出 mxy@oxcoder.com
> 解析
根据题目可以知道,判断条件如下:
at除了开头结尾不转化, 其他位置均转化且只转化一次。dot均要转化
我这直接采用正则去匹配修改内容,利用空格作为标识符,trim()通过这个去去除前后对应的标识符。以免干扰后续的匹配。具体逻辑如下
> 解决方案
class Solution {solution(str) {let newStr = str.replace(/at/g, ' at ').trim().replace(/\s(at)\s/, '@').replace(/\s/g, '')newStr = newStr.replace(/dot/g, ' dot ').trim().replace(/\s(dot)\s/g, '.').replace(/\s/g, '')return newStr;}
}
此题较为简单,通过标识直接过。
往期内容 💨
🔥 < elementUi 组件插件: el-table表格拖拽修改列宽及行高 及 使用注意事项 >
🔥 < 每日小技巧:N个很棒的 Vue 开发技巧, 持续记录ing >
🔥 < CSDN周赛解析:第 27 期 >
🔥 < 每日算法 - JavaScript解析:二叉树灯饰【初识动态规划 - dp, 具体理解配合代码看最合适,代码均有注释】 >
相关文章:
< CSDN周赛解析:第 28 期 >
CSDN周赛解析:第 27 期👉 第一题: 小Q的鲜榨柠檬汁> 题目解析> 解决方案👉 第二题: 三而竭> 解析> 解决方案> 拓展知识👉 第三题: 隧道逃生> 解析> 解决方案👉…...
【题外话】如何拯救小米11Pro这款工业垃圾
1 背景媳妇用小米11Pro手机,某日不慎摔落,幸好屏幕未碎,然而WiFi却怎样都无法打开,初以为是系统死机,几天依旧故障无法使用。现在的手机没有WiFi功能,就无法刷抖音、看视频,就是鸡肋了。后抽空去…...
Python中有哪些常用操作?这20个你都会吗
Python 是一个解释型语言,可读性与易用性让它越来越热门。 正如 Python 之禅中所述: 优美胜于丑陋,明了胜于晦涩。 在你的日常编码中,以下技巧可以给你带来意想不到的收获。 1、字符串反转 下面的代码片段,使用 P…...
【LeetCode】剑指 Offer(4)
目录 写在前面: 题目:剑指 Offer 10- I. 斐波那契数列 - 力扣(Leetcode) 题目的接口: 解题思路: 代码: 过啦!!! 题目:剑指 Offer 10- II. …...
庄懂的TA笔记(十二)<>
庄懂的TA笔记(十二)<>一、作业展示,答疑:1、作业:2、答疑:二、作业示范,分析:1、文档分析:2、资源分析:3、资源优化:4、光…...
学分绩点(2023寒假每日一题 5)
北京大学对本科生的成绩施行平均学分绩点制(GPA)。 既将学生的实际考分根据不同的学科的不同学分按一定的公式进行计算。 公式如下: 实际成绩 绩点 90——100 4.0 85——89 3.7 82——84 3.3 78——81 3.0 75…...
Framework学习之旅:Zygote进程
概述 在Android系统中,DVM(Dalvik 虚拟机和ART、应用程序进程以及运行系统的关键服务SystemServer进程都是由Zygote进程来创建的。通过fork(复制进程)的形式来创建应用程进程和SystemServer进程,由于Zygote进程在启动时会创建DVM…...
HTTP基础知识
关键字:一问一答用于和服务器交互什么是HTTPHTTP是个应用层协议,是HTTP客户端和HTTP服务器之间的交互数据格式。所以这里有个实例:在浏览网页的时候,浏览器会向服务器发送一个HTTP请求,告诉服务器我想访问什么..然后服…...
Delphi 10.4.2使用传统代码提示方案(auto complete)(转)
Delphi 10.4重点是实现了LSP,但现在最新的10.4.2还是不成熟,无法满足日常需要,不过没关系,可以设置为原有的方案,如下图:具体操作:Tools->Options->Editor->language->Code Insight…...
存储类别、链接与内存管理(三)
1、malloc函数详解 (1)函数声明 #include <stdlib.h> void* malloc(size_t size);malloc可以申请一定数量的空闲内存,这样的内存是匿名的,也就是malloc不会为其赋名,但是确实返回动态分配内存块的首元素地址&a…...
Java:Linux(CentOS)安装、配置及相关命令
目录一、VMware安装二、CentOS安装1、安装过程2、加载ISO2.1 桌面的设置三、VI/VIM编辑器1、一般模式2、编辑模式3、命令模式4、模式间转换四、网络配置和系统管理操作1、配置子网IP和网关2、配置虚拟机ip地址2.1 ifconfig 查询ip地址2.2 修改IP地址3、配置主机名3.1 hostname …...
Linux 操作系统原理 — 多任务优先级调度策略
目录 文章目录 目录多任务优先级调度策略User Process 调度策略配置调整 User Process 的优先级调整非实时进程的优先级调整实时进程优先级调整 User Process 的调度算法多任务优先级调度策略 在 Linux Kernel 中,Kernel Thread 作为唯一的调度实体,Kernel Scheduler(调度程…...
链表学习之找到两个链表相交的第一个节点
链表解题技巧 额外的数据结构(哈希表);快慢指针;虚拟头节点; 找到两个链表相交的第一个节点 给定两个链表,这两个链表可能有环,可能无环。判断这两个链表是否相交,相交则返回第一…...
【Kubernetes】【十一】Pod详解 Pod的生命周期
Pod生命周期 我们一般将pod对象从创建至终的这段时间范围称为pod的生命周期,它主要包含下面的过程: pod创建过程 运行初始化容器(init container)过程 运行主容器(main container) 容器启动后钩子&#…...
Connext DDS录制服务 Recording Service(1)
1 序言 1.1 简介 RTI记录服务包括以下工具: •记录服务,一种RTI Connext DDS应用程序,用于记录主题和发现数据。记录服务记录数据更新以及时间戳,因此您可以查看或回放系统中随时间发生的数据更新。默认情况下,记录的数据存储在SQLite文件中。录制服务还具有一个API,用于…...
vTESTstudio - VT System CAPL Functions - VT2004(续2)
不要沮丧,不必惊慌,做努力爬的蜗牛或坚持飞的笨鸟,我们试着长大,一路跌跌撞撞,哪怕遍体鳞伤。vtsSetPWMVoltageLow - 设置PWM输出上的低电压功能:指定数字输出信号(尤其是PWM信号)输…...
每天一个linux命令---awk
awk命令 1. 简介 awk是一种处理文本文件的语言,是一个强大的文本分析工具,grep、sed、awk并称为shell中文本处理的三剑客。 AWK 是一种处理文本文件的语言,是一个强大的文本分析工具。 之所以叫 AWK 是因为其取了三位创始人 Alfred Aho&am…...
Open3D 点云旋转之轴角式(Python版本)
文章目录 一、简介二、实现代码三、实现效果参考资料一、简介 三维空间中表示旋转的方法有很多种,轴角式是其中非常经典的一种表示方式。虽然欧拉角表示旋转的方法很是常用,但欧拉角存在着万向锁这个问题,因此轴角式旋转在旋转使用中更为合适。其原理也很是明了,如下所述:…...
Error: Timeout trying to fetch resolutions from npm
文章目录问题描述【最终解决】我搜索到的解决方案npmjs 该依赖各版本列表及对应的被下载次数github issue 说降级到0.0.3就可以正常运行了SOF 也说降级别到0.0.3问题描述 在项目里用到了 "preinstall": "npx npm-force-resolutions"配置,在一台…...
Python基础3
目录 1. 函数多返回值 2. 函数多种传参方式 3. 匿名函数 3.1 函数作为参数传递 3.2 lambda匿名函数 4. 文件的读取操作 4.1 open()打开函数 4.2 读操作方法 4.3 文件的写入 4.4 文件的追加 5. 异常的捕获方法 5.1 捕获常规异常 5.2 捕获指定…...
LabVIEW架构演进:从数据流到混合计算与云原生的未来
1. 项目概述:从一次访谈看LabVIEW的架构演进最近,我偶然看到一篇关于LabVIEW之父Jeff Kodosky的访谈,他谈到了LabVIEW未来软件架构的构想。作为一名在测控领域摸爬滚打了十多年的工程师,这个话题瞬间就抓住了我的眼球。LabVIEW&am…...
抖音无水印下载器终极指南:两种高效方法实现高清视频保存
抖音无水印下载器终极指南:两种高效方法实现高清视频保存 【免费下载链接】douyin_downloader 抖音短视频无水印下载 win编译版本下载:https://www.lanzous.com/i9za5od 项目地址: https://gitcode.com/gh_mirrors/dou/douyin_downloader 抖音无水…...
Taotoken 用量看板如何帮助团队清晰追踪与优化 API 调用成本
🚀 告别海外账号与网络限制!稳定直连全球优质大模型,限时半价接入中。 👉 点击领取海量免费额度 Taotoken 用量看板如何帮助团队清晰追踪与优化 API 调用成本 对于依赖大模型 API 进行开发的团队而言,成本控制与资源分…...
Excel插件E灵实战:把杂乱的家庭成员明细表,一键变成规整的‘一户一档’报表
Excel插件E灵实战:从杂乱数据到专业报表的智能转换 在日常办公中,我们经常需要处理各种家庭成员信息表,这些原始数据往往杂乱无章,包含重复、缺失或不规范的记录。传统的手工整理方式不仅耗时费力,还容易出错。本文将详…...
Arm Neoverse CMN-650架构解析与配置优化指南
1. Arm Neoverse CMN-650架构概览在现代多核处理器系统中,一致性互连网络是实现高效数据共享的关键基础设施。作为Arm Neoverse平台的核心组件,CMN-650采用创新的Mesh架构设计,为多核SoC提供了高带宽、低延迟的片上互连解决方案。与传统的总线…...
Ubuntu 22.04 下配置 Arduino IDE 2.x:从安装到第三方库的完整避坑指南
1. 准备工作:下载Arduino IDE 2.x 在Ubuntu 22.04上配置Arduino开发环境,第一步自然是获取官方IDE。我推荐直接从Arduino官网下载最新版本,避免使用老旧软件包带来的兼容性问题。打开浏览器访问arduino.cc/en/software,你会看到两…...
别再死记硬背了!用面包板和Arduino Nano,5分钟搞懂MOS管开关控制LED
用面包板和Arduino Nano轻松掌握MOS管控制LED的奥秘 记得第一次接触MOS管时,我被那些复杂的参数曲线和公式搞得晕头转向。直到有一天,导师扔给我一块面包板、几个元器件说:"别盯着书本看了,动手试试看!"那天…...
Empire(帝国)CMS 7.5 恶意文件上传-CVE-2018-18086
登录管理员页面:这里经过多次测试,直接上传一句话样本文件的话不生效(避坑),并且$符需要做转义(避坑),否则:方式1:<?php file_put_contents("getshell.php"…...
FanControl终极指南:让你的Windows风扇控制变得智能又安静
FanControl终极指南:让你的Windows风扇控制变得智能又安静 【免费下载链接】FanControl.Releases This is the release repository for Fan Control, a highly customizable fan controlling software for Windows. 项目地址: https://gitcode.com/GitHub_Trendin…...
Windows和Office智能激活终极指南:KMS_VL_ALL_AIO完整使用教程
Windows和Office智能激活终极指南:KMS_VL_ALL_AIO完整使用教程 【免费下载链接】KMS_VL_ALL_AIO Smart Activation Script 项目地址: https://gitcode.com/gh_mirrors/km/KMS_VL_ALL_AIO 还在为Windows系统频繁弹出激活提示而烦恼吗?Office文档突…...
