Python解题 - CSDN周赛第40期

news/2024/11/17 16:14:28/

上期问哥没参加,但从赛后大家的反馈来看,又出现了数据上的bug,使用 python 的朋友会遇到第二个用例的柱子高度数组长度不够,200根柱子,只有179个数据,这让人怎么玩?但是用C++的选手就没有这个问题。不禁让问哥想起另外几道使用 python 永远无法AC的每日一练(津津的储蓄计划与拯救爱情等),感受到C站对python的森森恶意。

可能C站人手实在不够吧,连必要的数据校验都做不到(摊手)。


第一题:小鱼的航程(改进版)

有一只小鱼,它上午游泳150公里,下午游泳100公里,晚上和周末都休息(实行双休日),假设从周x(1<=x<=7)开始算起,请问这样过了n天以后,小鱼一共累计游泳了多少公里呢?

分析

本题没什么难点,就是朴素的数学模拟计算。只要计算出从周 x 算起,到第 n 天后,共度过了多少个工作日,然后乘以 250 就是答案。

要注意的是,周 x 当天也算。

参考代码

def solution(self, x, n):r = 8-xif n > r:days = max(0, r-2) + 5*((n-r)//7) + min(5, (n-r)%7)else:days = min(x+n-1, 6-x)return max(0, 250*days)

第二题:编码

编码工作常被运用于密文或压缩传输。这里我们用一种最简单的编码方式进行编码:把一些有规律的单词编成数字。字母表中共有26个字母{a,b,…,z},这些特殊的单词长度不超过6且字母按升序排列。把所有这样的长度相同的单词放在 一起,按字典顺序排列,一个单词的编码就对应着它在整个序列中的位置。 你的任务就是对于所给的单词,求出它的编码。

分析

14期考过,可以参考问哥之前写的详细题解。现在看来没什么难度,暴力应该就可以过。


第三题:一维数组的最大子数组和

给定一个整数数组 nums ,找到一个具有最大和的连续子数组,输出该子数组在原数组中的开始下标和结束下标。原数组下标从0开始。

分析

一维数组的最大子数组和​​​​​​​我们已经很熟悉了,动态规划或贪心算法的入门操作。本题是在此基础上要输出最大子数组和的起始下标。所以问哥就懒得改了,直接在求最大和的代码基础上增加一个元组,记录起始下标即可。

参考代码

def solution(self, n, arr):if n<=1: return 0,0result = temp = arr[0]start = end = 0ans = (0, 0)for i in range(1, n):if arr[i] > arr[i]+temp:start = itemp = arr[i]else:temp += arr[i]end += 1if temp > result:result = tempans = (start, end)return ans

第四题:喜水青蛙

总是喜欢在水里嬉戏的青蛙,某天要过河拜访一位朋友。已知河道中长满了带刺的不知名生物,能通过的路只有一条直线,长度为L。 直线上随机分布着m块石头。青蛙的最小跳跃距离是s,最大跳跃距离是t。 青蛙想要尽可能的少踩石头,那么它通过河道最少会踩到多少石头?

分析

以前考过的NOIP原题,十几天前刚写过详细的题解,带着粉丝们复习过,也算是押题成功了吧?

别的不多说,本题有两个难点:

  1. 正确理解题意。青蛙并不是一定要踩着石头才能过河,原题是独木桥,可能还好理解一点,C站换成了直线。。。嗯,问哥只能说,读不懂的不止你一个。
  2. 路径需要压缩,但是和 LCM(最小公倍数)毫无干系。问哥的题解里已经详细指出了,这里也是提醒不要被网上某些不负责任的题解给带偏了。

http://www.ppmy.cn/news/35173.html

相关文章

JVM学习.04. Java内存模型与线程模型

1、前言该篇内容主要介绍JVM如何实现多线程&#xff0c;多线程间由于共享和竞争数据而导致的一系列问题以及解决方案。2、内存模型&#xff08;JMM&#xff09;Java内存模型&#xff08;Java Memory Model&#xff0c;简称JMM&#xff09;的主要目的是定义程序中各种变量的访问…

回流和重绘

系列文章目录 前端系列文章——传送门 JavaScript系列文章——传送门 文章目录系列文章目录1、浏览器渲染过程2、回流3、重绘4、优化4.1、合并样式修改4.2、批量操作DOM4.3、避免多次触发布局4.4、修改批量设置样式函数我们在做案例的时候&#xff0c;通常一个标签要设置很多样…

【嵌入式烧录/刷写文件】-1-详解Motorola S-record(S19/SREC/mot/SX)格式文件

目录 1 什么是Motorola S-record 2 Motorola S-record的格式 2.1 Motorola S-record的结构 2.1.1 “Record type记录类型”的说明 2.1.2 “Record length记录长度”的说明 2.1.3 如何计算“Checksum校验和” 2.2 Record order记录顺序 2.3 Text line terminator文本行终…

Python深度学习实战:人脸关键点(15点)检测pytorch实现

引言 人脸关键点检测即对人类面部若干个点位置进行检测&#xff0c;可以通过这些点的变化来实现许多功能&#xff0c;该技术可以应用到很多领域&#xff0c;例如捕捉人脸的关键点&#xff0c;然后驱动动画人物做相同的面部表情&#xff1b;识别人脸的面部表情&#xff0c;让机…

动态规划---线性dp和区间dp

动态规划(三) 目录动态规划(三)一&#xff1a;线性DP1.数字三角形1.1数字三角形题目1.2代码思路1.3代码实现(正序and倒序)2.最长上升子序列2.1最长上升子序列题目2.2代码思路2.3代码实现3.最长公共子序列3.1最长公共子序列题目3.2代码思路3.3代码实现4.石子合并4.1题目如下4.2代…

【Java】注解与反射

学习视频&#xff1a;【狂神说Java】注解和反射_哔哩哔哩_bilibili Java内存分析 #mermaid-svg-5DVSYhOqC0pHFfwe {font-family:"trebuchet ms",verdana,arial,sans-serif;font-size:16px;fill:#333;}#mermaid-svg-5DVSYhOqC0pHFfwe .error-icon{fill:#552222;}#merm…

现代浏览器四大进程

现代浏览器四大进程 一、进程简介及分类 现代浏览器通常使用多进程架构&#xff0c;其中包括以下四种常见的进程&#xff1a; 浏览器进程&#xff08;Browser Process&#xff09;&#xff1a;浏览器的主进程&#xff08;负责协调、主控&#xff09;&#xff0c;只有一个 该进…

Spring6 - (03) Spring 入门程序

文章目录Spring6 -&#xff08;03&#xff09;Spring 入门程序1. Spring 框架下载&#xff08;了解即可&#xff09;2. Spring 框架目录3. Spring 框架jar包4. 第一个 Spring 程序4.1 环境准备4.2 添加 Spring 依赖4.3 添加 junit 依赖4.4 定义 Bean 类4.5 编写 Spring 配置文件…