A 小红小紫投硬币
print(1/2)
B 小红的字符串
s = input() # 直接接受输入
n = len(s) # 计算字符串长度
# 初始化变量result,用于累加每一步的最小移动次数
result = 0
# 遍历字符串的前半部分
for i in range(n // 2):
# 计算当前字符与其对称字符的ASCII码差值
diff = abs(ord(s[i]) - ord(s[-i-1]))
# 计算使字符匹配的最小移动次数,可以顺时针也可以逆时针
min_step = min(diff, 26 - diff)
# 将当前的最小步数加到总和中
result += min_step
print(result) # 输出结果
n = input() # 读取输入,虽然在此代码中没有使用n
s = input() # 读取字符串s
x, y, z = map(int, input().split()) # 读取三个整数x, y, z
r = 0 # 初始化r,用于计数"01"子串的数量
while "01" in s and r < y: # 只要字符串s中存在"01"且r小于y时,继续循环
r += s.count("01") # 计算s中"01"子串的数量,并累加到r上
s = s.replace("01", "") # 将s中的"01"子串移除
print(min(r, y)) # 输出r和y中的较小值
D 小红组比赛
# 读取行数和列数
n, m = map(int, input().split())
# 初始化存储所有行数据的列表
ques = []
# 读取每一行的数据
for _ in range(n):
ques.append(list(map(int, input().split())))
# 读取目标值
tar = int(input())
# 初始化状态集合,开始时只有0(没有任何数相加的状态)
st = {0}
# 遍历每一行数据,更新状态集合
for u in ques:
su = set() # 新的状态集合,用于存储当前行处理后的所有可能的和
# 遍历当前已有的所有和
for x in st:
# 将当前和与本行的每一个数相加,加入到新的状态集合中
for y in u:
su.add(x + y)
# 更新状态集合为新的集合
st = su
# 计算状态集合中的数与目标值的最小差值
print(min(abs(x - tar) for x in st))
E 折半丢弃
# 输入测试用例数
T = int(input())
# 定义函数,用于找出满足条件的最大整数k
def find_maximum_k(array):
left, right = 1, min(array[-1], len(array)) + 1 # 初始化左右边界
while left < right:
mid = (left + right + 1) >> 1 # 计算中点
seen = set() # 创建一个集合来存储遇到的元素
for x in array:
while x != 0 and (x >= mid or x in seen):
x //= 2 # 对x进行“折半”处理
seen.add(x) # 将处理后的x添加到集合中
if len(seen) == mid: # 如果集合的大小等于mid,说明可以扩展
left = mid # 移动左边界
else:
right = mid - 1 # 否则调整右边界
return left # 返回最大的k值
# 迭代处理每一个测试用例
for _ in range(T):
n = int(input()) # 输入数组大小
array = sorted(map(int, input().split())) # 输入数组,并进行排序
print(find_maximum_k(array)) # 调用函数并打印结果
F 小红走矩阵
pypy3
G 游游的删点直径
pypy3
标签:周赛,01,城杯,int,mid,53,集合,input,array From: https://blog.csdn.net/qq_73636157/article/details/140865182