欢迎来到尧图网

客户服务 关于我们

您的位置:首页 > 汽车 > 新车 > 华中农业大学第十四届程序设计竞赛(新生赛)

华中农业大学第十四届程序设计竞赛(新生赛)

2025/2/21 3:14:47 来源:https://blog.csdn.net/m0_74473137/article/details/144413582  浏览:    关键词:华中农业大学第十四届程序设计竞赛(新生赛)

确定这是新生赛?这不对吧,题目难度有点逆天。

A 问题一

题目描述

小雷口算推出了令人激动的、面向各个学龄的新功能:口算 PK!

作为大一新生的小 S 热衷于 PK 功能,在其中的"100100100 以内数字比大小''中,小 S 在比赛中连连输给波奇酱,从而道心破碎。在某一局比赛中,小 S 决定申请代打。请你帮助他打败波奇酱,助他成为口算界的荣耀王者!

在一局比赛中,系统会给出 n 对数字。对于每一对数字,你需要帮助小 S 判断它们的大小关系。

输入描述:

首先输入一个整数 n(1≤n≤30),表示数字对的数量。接下来 n 行,每行输入两个整数 ai,bi(1≤ai,bi≤100)。

输出描述:

对于第 i 对数字,如果 ai>bi​,输出">";如果 ai<bi​,输出 "<";如果 ai=bi​,输出 "="。(输出均不包含引号)

示例1

输入

6
24 76
74 48
13 13
95 29
68 29
97 34

输出

<
>
=
>
>
>
n=int(input())
for _ in range(n):a,b=map(int,input().split())if a>b:print('>')elif a<b:print('<')elif a==b:print('=')

C问题二
 

题目描述

研究表明,常年发奶龙的人智商都比较高。

经常发奶龙的签到哥智商大增,同时他也出现了幻觉:在这题输入的字符串中,只要他看到有字符 'e' 出现在字符 'z' 的前面,他就会认为这道题是 easy 的。

请你根据输入的字符串来判断这道题是否是 easy 的。

输入描述:

第一行输入一个正整数 n(1≤n≤200),表示字符串的长度。第二行输入一个长为 n 的字符串,作为你判断的依据。保证字符串中仅含有小写字母。

输出描述:

如果这道题是 easy 的,则输出 "easy",否则输出"hard"。(输出均不包含引号)

示例1

输入

5
exgcd

输出

hard

说明

在第一组样例中,不存在在 'z' 前面的 'e',所以答案是 "hard"。

示例2

输入

22
eazmlbqhzyssywjsscxsyh

输出

easy

示例3

输入

7
esssssz

输出

easy

说明

在第三组样例中,第一个字母是 'e',最后一个字母是 'z',所以存在在 'z' 前面的 'e',答案是 "easy"。
n=int(input())
s=input()
e_index=-1
for i in range(n):if s[i]=='e':e_index=ielif s[i]=='z' and e_index !=-1:print('easy')break
else:print('hard')

E 题目描述

小 S 给出了两个字符串 S 和 T。他想求出 T 在 S 中的出现次数,即存在多少个 i(1≤i≤∣S∣−∣T∣+1),使得 Si+j−1=Tj 对所有的 1≤j≤∣T∣ 成立。例如,"ss" 在 "sss" 中共出现了 2 次。

由于 SSS 可能很长,所以他通过如下方式给出 SSS。

S=∑i=1 n ai×si

其中 si+sj 表示字符串拼接,∑i=1 nsi表示 s1+s2+⋯+sn​,ai×si​ 表示 ai个 si 依次拼接。

例如,记 S1= "kao",S2​= "mopian",那么 S1+S2​ 表示 "kaomopian",3×S1 表示 "kaokaokao"。

输入描述:

第一行输入一行一个整数 n(1≤n≤2×10^5)。接下来输入 n 行,第 i 行首先输入一个整数 ai(1≤ai≤10^9),再输入一个小写字母 sis_isi​。保证对于所有的 1≤i<n1,si​!=si+1​。接下来输入一行一个整数 m(1≤m≤2),表示 T 的长度。最后输入一行一个长度为 m 的字符串 T,保证 T 中仅含小写字母。

输出描述:

输出一行一个整数,表示 T 在 S 中的出现次数。

示例1

输入

4
2 s
1 y
2 s
1 y
2
sy

输出

2

说明

在第一组样例中,S= "ssyssy",T= "sy",所以 T 在 S 中出现了 2 次。

示例2

输入

3
2 r
3 s
4 y
1
y

输出

4

说明

在第二组样例中,S= "rrsssyyyy",T= "y",所以 T 在 S 中出现了 4 次。

 

n=int(input())
num=[]
li=''
ans=0
for _ in range(n):a,s=map(str,input().split())num.append(int(a))li+=s
m=int(input())
T=input()
if m==1:for i in range(n):if li[i]==T:ans+=num[i]
else:if T[0]!=T[1]:ans=li.count(T)else:for i in range(n):if li[i]==T[0]:ans+=num[i]-1
print(ans)

F 题目描述

华中农业大学第十四届程序设计竞赛(新生赛)即将来临,匿迹已久的 SS 出题组招募英才,开始了新一轮的出题工作。

目前,SS 出题组一共出了 n 道题,每道题的难度用 0 到 9 中的一个数字表示。签到哥想把这 nnn 道题组成若干套题单,每道题都必须被分到一套题单中,并且每道题都只能被分到一套题单中。为了保证题单的梯度合理,在同一套题单中,不能有难度相同的题;同时,为了便于组题,他希望每个题单中的题目编号是连续的;此外,每个题单中至少要有 1 道题。

SS 出题组给出了这 n 道题的难度。其中,编号为 iii 的题目的难度为 ai​。

签到哥想知道,最少可以组多少套题单?最多可以组多少套题单?

输入描述:

输入包含多组数据。首先输入一行一个整数 T(1≤T≤10^5),表示数据的组数。对于每一组数据,首先输入一行一个正整数 n(1≤n≤10^6),表示题目的数量。接下来输入一行 n 个整数 ai(0≤ai≤9),其中 ai​ 表示编号为 i 的题目的难度。保证对于一个测试点的所有数据,n 的和不超过 10^6。

输出描述:

输出 T 行。对于每组测试数据,输出两个正整数,分别表示组成题单数量的最小值和最大值。

示例1

输入

2
3
2 7 2
2
9 9

输出

2 3
2 2

说明

对于第一组测试数据,最少可以组 2 套题单,因为可以将编号为 1 和 2 的题目组成一套题单,将编号为 3 的题目组成一套题单;最多可以组 3 套题单,因为可以将编号为 1 的题目组成一套题单,编号为 2 的组成一套题单,编号为 3 的组成一套题单。
T = int(input())for i in range(T):n = int(input())d = list(map(int, input().split()))n = len(d)num = 1s = set()for i in d:if i in s:num += 1s = set([i])else:s.add(i)print(f"{num} {n}")

G题目描述

作为一名爱龙人士,签到哥饲养了一些奶龙。奶龙们的胃口非常挑剔,每一天他们不仅要吃到足够多的食物,并且对食物的种类还有很多要求。


在签到哥家的门前有一个神秘商店。神秘商店里有 m 个摊位,每个摊位的食物是无限的。其中,在第 i个摊位里售卖的食物每份需要 ai元。

奶龙一共有 n 只。其中,第 iii 只奶龙每天至少要吃 bi​ 份食物,同时,这 bi 份食物至少需要来自 ci​ 个不同的摊位。如果不能满足奶龙的所有要求,奶龙就会被暴暴龙抓走。

由于刚刚参加完区域赛,签到哥身上只有 x 元。请判断签到哥是否可以满足所有奶龙的要求,使得没有奶龙被暴暴龙抓走?

输入描述:

输入包含多组数据。首先输入一行一个整数 T,表示数据的组数。对于每一组数据,首先输入一行两个整数 m,n(1≤m,n≤3×105)。接下来输入一行 m个正整数 ai(1≤ai≤10^6),含义如题意所述。接下来输入一行 n 个正整数 bi(1≤bi≤10^6),含义如题意所述。接下来输入一行 n 个正整数 ci(1≤ci≤106,ci≤bi),含义如题意所述。最后输入一行一个正整数 x(1≤x≤10^13),含义如题意所述。保证对于一个测试点的所有数据,m 的和不超过 3×10^5,n 的和不超过 3×10^5。

输出描述:

输出共 T 行。

对于每组测试数据,输出一个字符串表示答案。如果所有奶龙都不会被暴暴龙抓走,输出 "Yes";否则输出 "No"。(输出均不包含引号)

 

输出对大小写不敏感:例如,"YES" 和 "yEs" 都可以表示所有奶龙都不会被暴暴龙抓走。

示例1

输入

4
4 3
1 1 4 2
2 1 4
2 1 1
10
2 2
1 3
1 4
1 3
114514
2 2
4 2
5 1
2 1
13
2 2
4 2
5 1
2 1
14

输出

Yes
No
No
Yes

 

t = int(input())
for _ in range(t):n, m = map(int, input().split())a = list(map(int, input().split()))b = list(map(int, input().split()))c = list(map(int, input().split()))x = int(input())a.sort()for i in range(1, n):a[i] += a[i - 1]if max(c) > n:print('No')continueneed = 0for i in range(m):v = n if c[i] > n else c[i]need += a[v - 1] + a[0] * (b[i] - v)print('Yes' if need <= x else 'No')

I 题目描述

记 f(x,t)=∏i=0 t−1(x+i)。给定 n 与 s,求 ∑x=1 nf(x,s),答案对 10^9+7取模。

输入描述:

输入一行两个整数 n(1≤n≤10^18),s(1≤s≤2×10^5)。

输出描述:

输出一行一个整数,表示答案对 10 ^ 9 + 7 取模的结果。

示例1

输入

3 1

输出

6

说明

在第一组测试数据中,n=3 且 s=1。所以 ∑x=1nf(x,s)=∑x=1 3f(x,1)=∑x=13∏i=00(x+i),而 ∑x=13∏i=00(x+i)=1+2+3,所以答案为 6。

示例2

输入

1 3

输出

6
def modular_inverse(a, m):m0, x0, x1 = m, 0, 1if m == 1:return 0while a > 1:q = a // mm, a = a % m, mx0, x1 = x1 - q * x0, x0if x1 < 0:x1 += m0return x1def product_modulo(n, s, m):product = 1for i in range(s + 1):product = (product * (n + i)) % mreturn productdef sum_f(n, s):m = 10**9 + 7product = product_modulo(n, s, m)inverse = modular_inverse(s + 1, m)return (product * inverse) % mn, s = map(int, input().split())
print(sum_f(n, s))

K  题目描述

波奇酱当上了 HZAUACM 的负责人。


HZAUACM 一共有 n 行 m 列共 n×m 个座位,其中,第 x 行 y 列的座位用坐标 (x,y)表示。除了波奇酱,HZAUACM 还有 k 名成员,他们的位置分别是 (x1,y1),(x2,y2)⋯(xn,yn)。因为波奇酱十分社恐,所以波奇酱希望选取一个座位 (X,Y)(不能与其他成员的坐标重合),使得 min⁡i=1k(∣xi−X∣+∣yi−Y∣) 最大。如果有多个位置满足上述条件,请最小化 XXX;如果仍然有多个位置满足,请最小化 YYY。

输入描述:

第一行输入三个正整数 n,m(1≤n,m≤100),k(1≤k≤min⁡(n×m−1,100)),分别表示 HZAUACM 的座位分布和除了波奇酱的成员数量。接下来输入 kkk 行,每行两个正整数 xi,yi(1≤xi≤n,1≤yi≤m),表示第 i 位成员的位置。保证每位成员的坐标互不相同。

输出描述:

输出共两行。首先输出一行一个整数,表示波奇酱选取的座位离最近成员的距离。接下来输出一行两个整数 (X,Y),表示波奇酱选取座位的坐标。

示例1

输入

5 5 5
1 3
4 5
1 1
5 4
2 2

输出

3
4 1

示例2

输入

4 8 11
1 1
4 1
3 4
3 5
3 7
3 8
2 6
2 8
4 5
4 6
4 8

输出

2
1 3

说明

在第二组样例中,坐标 (1,3),(1,4),(1,5),(1,7),(2,2),(2,3),(3,2),(4,3) 离其他所有人的距离均为 2。同时,可以证明,不会有其他更优的位置。所以首先最小化 X,又因为 (1,3),(1,4),(1,5),(1,7) 均符合条件,所以最小化 Y,选择坐标为 (1,3) 的座位。

 

n, m, k = map(int, input().split())
members = set()
r = 0
# 位置
minGroup = (0, 0)for _ in range(k):x, y = map(int, input().split())members.add((x, y))for i in range(1, n + 1):for j in range(1, m + 1):minD = m + nif (i, j) not in members:for a, b in members:d = abs(i - a) + abs(j - b)if d < minD:minD = d
#         print(minD, r)
#         print("p", i, j)if minD > r:r = minDminGroup = (i, j)print(r)
for t in minGroup:print(t, end=" ")

M 题目描述

Alice 和 Bob 准备进行 n 次对决,每场对决有且仅有一名胜者。由于裁判 Alicespring 被 Alice 收买,所以在所有对决开始之前,Alice 可以提前得知接下来每一场对决的结果。

与此同时,裁判 Alicespring 给予了 Alice 逆转对决结果的能力。Alice 可以在任意一场对决开始前发动能力,并在任意一场对决结束后结束能力。在能力发动期间,所有对决的结果都将被逆转。能力至多可以被发动一次(可以不被发动)。

如果某一场对决的结果为 Alice 胜,那么逆转后的结果为 Bob 胜;反之,如果某一场对决的结果为 Bob 胜,那么逆转后的结果为 Alice 胜。

在这 nnn 场对决中,胜出次数多者可以获得 Alicespring 的荣誉徽章。如果 Alice 和 Bob 胜出次数相等,则 Alice 与 Bob 均不能获得 Alicespring 的荣誉徽章。请问 Alice 是否可以通过合理使用逆转结果的能力获得 Alicespring 的荣誉徽章?

输入描述:

第一行输入一个整数 n(1≤n≤10),表示对决的数量。第二行输入 n 个整数 ai(ai∈{0,1}),依次表示这 n 场对决的结果。如果 ai​=1,表示 Alice 将在第 i 场对决中取得胜利;如果ai​=0,表示 Bob 将在第 i 场对决中取得胜利。

输出描述:

输出一行一个字符串。如果 Alice 可以获得 Alicespring 的荣誉徽章,输出 Yes;否则输出 No。输出对大小写不敏感:例如,YES和 yEs都可以表示 Alice 可以获得 Alicespring 的荣誉徽章。

示例1

输入

5
1 0 0 0 0

输出

Yes

说明

在第一组样例中,Alice 可以在第 2 场对决开始前发动能力,在第 3 场对决结束后结束能力。所以 5 场对决的结果分别为:Alice 胜,Alice 胜,Alice 胜,Bob 胜,Bob 胜。Alice 胜出的次数多于 Bob 胜出的次数,Alice 可以获得荣誉徽章。

示例2

输入

1
0

输出

Yes

说明

在第二组样例中,Alice 可以在第 1 场对决开始前发动能力,在第 1 场对决结束后结束能力。
n=int(input())
ds=[int(x) for x in input().split()]
ok=False
for i in range(n):if ok : breakfor j in range(i,n):for k in range(i,j+1):ds[k] = 1 - ds[k]t1=sum(ds)t2=n-t1if t1!=t2:print("Yes")ok = Truebreakfor k in range(i,j+1):ds[k] = 1 - ds[k]
if not ok:print("No")

 

 

版权声明:

本网仅为发布的内容提供存储空间,不对发表、转载的内容提供任何形式的保证。凡本网注明“来源:XXX网络”的作品,均转载自其它媒体,著作权归作者所有,商业转载请联系作者获得授权,非商业转载请注明出处。

我们尊重并感谢每一位作者,均已注明文章来源和作者。如因作品内容、版权或其它问题,请及时与我们联系,联系邮箱:809451989@qq.com,投稿邮箱:809451989@qq.com

热搜词