4. 劲舞团python解法——2024年省赛蓝桥杯真题

ops/2025/2/3 4:07:38/

问题描述:4.劲舞团 - 蓝桥云课

小蓝最近迷上了一款名为 “劲舞团” 的游戏,具体来说,只要按照游戏中给出的键位提示依次按出对应的键位,游戏人物便可以跟随节奏跳舞。对于连续的 K 次正确敲击,如果任意连续的两次敲击间间隔时间都小于等于 1s,那么我们称这是一次 K 连击。现在给出一局小蓝的游戏记录文件,log.txt 中记录了 N 条记录,每条记录有三个字段,依次为正确的敲击字符、小蓝打出的字符、 打出字符的时间对应的毫秒时间戳。现在请你计算下最长的 K 连击是多少,你只需要输出 K 的值。

答案提交

这是一道结果填空的题,你只需要算出结果后提交即可。本题的结果为一个整数,在提交答案时只填写这个整数,填写多余的内容将无法得分。

问题分析

本题在官方分类中为中等难度题目,真正分析的时候,你将发现,比如滑动窗口、动态DP这些高大上的算法啊,有的时候不学其实影响真的挺大的,所以我建议在看完本题之后,没有思路或者无从下手的同学又可以喜提去哔哩哔哩大学进修喽,当然等你学成归来之后就会发现,在本题中这些算法几乎用不上

官方给定了本题的示例文本  log.txt  ,将其保存到本地(点击那个蓝色的字体,然后在弹出的窗口中右键另存为),在你审题之后,观察这个文件,你会发现,本题中时间戳是完完全全顺序的,并未被打乱(感谢仁慈的出题者wuhu~

如果是被打乱的话,那将是另一个话题了(将一个包含大量且多种数据格式的乱序文件按照某一种方式进行快速排序(`へ´))

那么言归正传,在本题中,我们几乎只需要做三件事:

- 1, 读入log.txt文件

- 2,遍历文件中的数据,在本题中,我们应该做的事,比较每一行的第一个数据元素与第二个数据元素是否相同

- 3,在  2  的基础上,判断当前操作的时间戳和上一次操作的时间戳之差是否满足小于等于1s的条件

那么对于还不会使用python对文件进行读写存取等操作的同学,哔哩哔哩大学进修传送门已经为你准备好辣!python第八章-文件操作_哔哩哔哩_bilibili

进修结束之后,我们即将准备发车!

代码描述

针对本题,由于代码逻辑和代码内容比较简单,这里不再做额外的解释,如果您对此还有疑问,欢迎评论区或者私信讨论哦~

当然有一个可能会被忽略的点需要提一提,以下内容对于本题并不是很重要,但是对于那种只给出一部分参考用例的文件操作题中还是比较关键的,我在代码中保留了这个思维,希望同学们可以留意到这一点:

代码中有一段对于  满足正确点击要求:上次操作时间戳为空 或者 符合时间间隔要求 的部分,这部分毫无疑问为满足连击要求的,本题中变量last_timestamp用于记录上次操作的时间戳,便于与当前操作时间戳做差判断,current_k = 0用于记录当前的第几次K连击,last_timestamp初始化为None,当last_timestamp为空时表示当前读入的操作实际为记录的第一次操作,对于这个的处理,其实是为了应对在按键点击正确的情况下第一个操作是满足条件的这种情况,对应的current_k += 1因为当前无法判断后一次操作与当前正确操作的时间间隔是否符合条件,如果符合条件,自然是第二次K连击,如果只是时间戳不符合条件,则当前操作应当重新看做是第一次K连击,这个逻辑希望同学们理解,如果觉得文字绕的话,也可以参考以下的示意图:

那么本题代码如下:

python">def calculate_longest_k_combo(log_file_path):with open(log_file_path, 'r') as file:logs = file.readlines()# 初始化变量longest_k = 0current_k = 0last_timestamp = None# 遍历日志记录for log in logs:correct_char, typed_char, timestamp = log.strip().split()timestamp = int(timestamp)# 检查是否正确敲击并且时间间隔是否小于等于1秒if correct_char == typed_char:if last_timestamp is None or (timestamp - last_timestamp) <= 1000: # 见文章中的解析current_k += 1else:current_k = 1else:current_k = 0# 更新最长连击if current_k > longest_k:longest_k = current_k# 更新最后的时间戳last_timestamp = timestampreturn longest_k# 假设log.txt文件位于当前目录
log_file_path = 'log.txt'
print(calculate_longest_k_combo(log_file_path))

本地代码运行结果:

提交答案到官网:

那么本题到此就结束了,  请同学们及时整理学习心得,  前方我们即将踏入新的征程!

写在后面

在官网的定位中, 本题只是填空题, 同学们最后只需要输出正确的答案即可, 在官网中请不要提交完整的代码哦~


http://www.ppmy.cn/ops/155214.html

相关文章

Linux《基础指令》

在之前的Linux《Linux简介与环境的搭建》当中我们已经初步了解了Linux的由来和如何搭建Linux环境&#xff0c;那么接下来在本篇当中我们就要来学习Linux的基础指令。在此我们的学习是包括两个部分&#xff0c;即指令和关于Linux的基础知识&#xff1b;因此本篇指令和基础知识的…

Python学习之旅:进阶阶段(五)数据结构-双端队列(collections.deque)

在 Python 的进阶学习过程中,数据结构的掌握至关重要。今天要介绍的双端队列(deque,即 double-ended queue),是一种非常实用的数据结构,Python 的collections模块中的deque类为我们提供了强大的双端队列操作功能。接下来,就一起深入了解双端队列吧。 一、什么是双端队列…

Brave132 编译指南 Windows 篇:部署 Node.js(五)

1. 引言 在 Brave 浏览器 132 版本的编译过程中&#xff0c;Node.js 扮演着至关重要的角色。作为一个基于 Chrome V8 引擎构建的 JavaScript 运行时环境&#xff0c;Node.js 赋予了开发者在服务器端执行 JavaScript 代码的能力。其非阻塞、事件驱动的架构使其特别擅长构建高性…

DeepSeek文生图模型Janus-Pro论文解读 —— 多模态AI的革命?

介绍 整个AI行业仍在适应最近发布的、震惊人工智能领域的 DeepSeek-R1。1月28日除夕当天的凌晨&#xff0c;DeepSeek 又发布了另一款出色的开源模型 Janus-Pro。这一次&#xff0c;它是一款能与其他顶级多模态模型相媲美的多模态人工智能模型。 在本文中&#xff0c;我们将解…

JavaScript的基本组成

1、JavaScript的组成部分 JavaScript可以分为三个部分&#xff1a;ECMAScript标准、DOM、BOM。 ECMAScript标准 即JS的基本语法&#xff0c;JavaScript的核心&#xff0c;描述了语言的基本语法和数据类型&#xff0c;ECMAScript是一套标 准&#xff0c;定义了一种语言…

Nginx前端后端共用一个域名如何配置

在 Nginx 中配置前端和后端共用一个域名的情况&#xff0c;通常是通过路径或子路径将请求转发到不同的服务。以下是一个示例配置&#xff0c;假设&#xff1a; 前端静态文件在 /var/www/frontend/。 后端 API 服务运行在 http://127.0.0.1:5000。 域名是 example.com&#xff…

本地搭建deepseek-r1

一、下载ollama(官网下载比较慢&#xff0c;可以找个网盘资源下) 二、安装ollama 三、打开cmd&#xff0c;拉取模型deepseek-r1:14b(根据显存大小选择模型大小&#xff09; ollama pull deepseek-r1:14b 四、运行模型 ollama run deepseek-r1:14b 五、使用网页api访问&#x…

【数据分享】1929-2024年全球站点的逐月平均能见度(Shp\Excel\免费获取)

气象数据是在各项研究中都经常使用的数据&#xff0c;气象指标包括气温、风速、降水、湿度等指标&#xff01;说到气象数据&#xff0c;最详细的气象数据是具体到气象监测站点的数据&#xff01; 有关气象指标的监测站点数据&#xff0c;之前我们分享过1929-2024年全球气象站点…