HNUCM-天梯赛选拔赛
创始人
2024-05-31 17:53:03
0

前言:题目暂未开放,所以只写了题目大概的要求,开放后会补上题目详情。

问题A:

题目概述:统计给出的字符串中的M和F并求比例。

思路:

根据给出样例数t进行循环,利用count函数统计字符串中的"M"和"F"进行解题即可。

代码:

while True:try:t = int(input())while t > 0:t -= 1strings = input().strip()m, f = strings.count('M'), strings.count('F')cnt = m + fprint("%.2f %.2f" % (m / cnt, f / cnt))except:break

问题B:

题目概述:给出n个数,判断有多少个数是重复出现的。

思路:

解题时为了逻辑简单,使用了一个字典和一个列表,分别来存储答到的次数和可能迟到的名单;当然也可以只使用一个字典完成解题,只需要把逻辑稍微修改一下即可。

代码:

n = int(input())
nums = list(map(int, input().split()))
lis, name = dict(), list()
cnt = 0
for num in nums:k = lis.get(num, 0)if k != 0 and num not in name:cnt, _ = cnt + 1, name.append(num)lis[num] = k + 1
print(cnt)

问题C:

题目概述:统计字符串中有多少个"hnucm"(不区别大小写)。

思路:

将字符串所有字符转化成小写,然后使用count函数即可。

代码:

strings = input().lower()
print(strings.count("hnucm"))

问题D:

题目概述:A和B从同起点相向跑步,A每分钟跑a米,B每分钟跑b米,A每跑4分钟休息一分钟,B每跑3分钟休息一分钟,问n分钟A能赶超B多少次。操场长400米。

思路:

其实这题我也没太看懂,想着是先算两个人跑步的距离相减再除以操场长度这样先试一试,结果过了。应该是一道数学题,不过我数学不好。

代码:

n, a, b = map(int, input().split())
cnt_A, cnt_B, run_A, run_B = 0, 0, 0, 0
for i in range(1, n + 1):if cnt_A == 4:cnt_A = 0else:run_A, cnt_A = run_A + a, cnt_A + 1if cnt_B == 3:cnt_B = 0else:run_B, cnt_B = run_B + b, cnt_B + 1
print((run_A - run_B) // 400)

问题E:

题目概述:给一个矩阵,每一步可以遍历八个方向,问矩阵中存在多少个不完全相同的“520”序列,不存在“520”序列就输出“爱你无法说出口!”

思路:

从题目很容易看出来这是一道深度优先搜索的题目,注意搜索截至条件即可。

代码:

def dfs(x: int, y: int, index: int):global cntif index == 3:cnt += 1else:for dx in range(-1, 2):for dy in range(-1, 2):if dx == 0 and dy == 0:continuenx, ny = x + dx, y + dyif 0 <= nx < n and 0 <= ny < m and maze[nx][ny] == ch[index]:# print(f"{ch[index]}:({nx}, {ny}) {index}")dfs(nx, ny, index + 1)n, m = map(int, input().split())
maze, ch, cnt = [input().strip() for _ in range(n)], ['5', '2', '0'], 0
# print(maze)
for i in range(n):for j in range(m):if maze[i][j] == '5':# print(f"5:({i}, {j})")dfs(i, j, 1)
print(cnt) if cnt != 0 else print("爱你无法说出口!")

问题F:

题目概述:同一时间给出多个作业,作业的所需时长不同,求最小的平均作业等待时间。

思路:

从题目很容易想到,这应该是在让我们选取一种作业调度的算法,来使平均等待时间最小;通过推理,不难发现题目应该是使用“短作业优先”的调度算法,来使平均等待时间最小;进行“短作业优先”的模拟即可。

代码:

n, time, cnt = int(input()), 0, 0
nums = sorted(list(map(int, input().split())))
for num in nums:cnt, time = cnt + time + num, time + num
# print(cnt)
print("%.2f" % (cnt / n))

问题G:

题目概述:有[1, 5, 10, 20, 50, 100]这几种面额的钱,问n块钱有几种找零方式。

思路:

仔细推敲题目,不难看出,这应该是一道动态规划的题目,并且是“数的划分”的变种。所以我们推算以后就能得到公式

maze[i][j] = maze[i][j - 1] if i - nums[j] < 0 else maze[i][j - 1] + maze[i - nums[j]][j]

这里引入了nums列表来减少二维列表的规模,降低空间和时间复杂度。

代码:

n = int(input())
nums = [0, 1, 5, 10, 20, 50, 100]
maze = [[0] * 7 for _ in range(n + 1)]
for i in range(7):maze[0][i] = 1
for i in range(n + 1):maze[i][1] = 1
# print(maze)
flag = True
for i in range(1, n + 1):for j in range(2, 7):maze[i][j] = maze[i][j - 1] if i - nums[j] < 0 else maze[i][j - 1] + maze[i - nums[j]][j]
print(maze[n][6])

(Tips:以下三题没ac,待题目开放,ac后更新,敬请谅解)

问题H:

待更新、、、、、、

问题I:

待更新、、、、、、

问题J:

待更新、、、、、、

相关内容

热门资讯

【NI Multisim 14...   目录 序言 一、工具栏 🍊1.“标准”工具栏 🍊 2.视图工具...
银河麒麟V10SP1高级服务器... 银河麒麟高级服务器操作系统简介: 银河麒麟高级服务器操作系统V10是针对企业级关键业务...
不能访问光猫的的管理页面 光猫是现代家庭宽带网络的重要组成部分,它可以提供高速稳定的网络连接。但是,有时候我们会遇到不能访问光...
AWSECS:访问外部网络时出... 如果您在AWS ECS中部署了应用程序,并且该应用程序需要访问外部网络,但是无法正常访问,可能是因为...
Android|无法访问或保存... 这个问题可能是由于权限设置不正确导致的。您需要在应用程序清单文件中添加以下代码来请求适当的权限:此外...
北信源内网安全管理卸载 北信源内网安全管理是一款网络安全管理软件,主要用于保护内网安全。在日常使用过程中,卸载该软件是一种常...
AWSElasticBeans... 在Dockerfile中手动配置nginx反向代理。例如,在Dockerfile中添加以下代码:FR...
AsusVivobook无法开... 首先,我们可以尝试重置BIOS(Basic Input/Output System)来解决这个问题。...
ASM贪吃蛇游戏-解决错误的问... 要解决ASM贪吃蛇游戏中的错误问题,你可以按照以下步骤进行:首先,确定错误的具体表现和问题所在。在贪...
月入8000+的steam搬砖... 大家好,我是阿阳 今天要给大家介绍的是 steam 游戏搬砖项目,目前...