Python刷题指南

输入输出

n,k,a,b = map(int,input().split())
n, v = map(int, input().split())
dst = deque(map(int, input().split()))

内置数据结构

双端队列

from collections import deque

dst = deque()
dst[0]
dst[-1]
dst.appendleft(8)
dst.append(1)
dst.pop()
dst.popleft()
# 将一个可迭代对象中的元素扩展到双向队列的右侧。
dst.extend([3,4,5])
# 将一个可迭代对象中的元素以逆序方式添加到双向队列的左侧。
dst.extendleft([3,4,5])
# 移除双向队列中的所有元素。
dst.clear()

列表

# 创建一个空列表
my_list = []

# 使用 append() 方法向列表末尾添加元素
my_list.append(1)
my_list.append(2)
print(my_list)  # 输出: [1, 2]

# 使用 extend() 方法将另一个列表的元素扩展到当前列表的末尾
another_list = [3, 4, 5]
my_list.extend(another_list)
print(my_list)  # 输出: [1, 2, 3, 4, 5]

# 使用 insert() 方法在指定位置插入元素
my_list.insert(2, 6)  # 在索引 2 处插入元素 6
print(my_list)  # 输出: [1, 2, 6, 3, 4, 5]

# 使用 remove() 方法移除指定值的第一个元素
my_list.remove(3)
print(my_list)  # 输出: [1, 2, 6, 4, 5]

# 使用 pop() 方法移除并返回指定索引处的元素
popped_element = my_list.pop(2)  # 移除索引 2 处的元素并将其返回
print(popped_element)  # 输出: 6
print(my_list)  # 输出: [1, 2, 4, 5]

# 使用 index() 方法查找指定值的第一个匹配项的索引
index = my_list.index(2)
print(index)  # 输出: 1

# 使用 count() 方法统计指定值在列表中的出现次数
count = my_list.count(4)
print(count)  # 输出: 1

# 使用 sort() 方法对列表进行排序(默认升序)
my_list.sort()
print(my_list)  # 输出: [1, 2, 4, 5]

# 使用 reverse() 方法反转列表中的元素
my_list.reverse()
print(my_list)  # 输出: [5, 4, 2, 1]

# 使用 clear() 方法移除列表中的所有元素
my_list.clear()
print(my_list)  # 输出: []

模板

二分查找

def check(a):
    return a<=5

arr = [1, 2, 3, 4, 3, 3, 6, 7, 2]
arr.sort()
print(arr)
l, r = -1, len(arr)
while l + 1 != r:
    mid = (l + r) // 2
    if check(arr[mid]):
        l = mid
    else:
        r = mid
# 输出满足check的最大值
print(arr[l])

示例

P9240 [蓝桥杯 2023 省 B] 冶炼金属 – 洛谷 | 计算机科学教育新生态 (luogu.com.cn)

l, r = 0, 1000000000

n = int(input())

arr = []

for i in range(n):

    d,f = map(int, input().split())

    arr.append((d,f))

def check1(n):

    for k in arr:

        if k[0]/n<k[1]:

            return False

    return True

def check2(n):

    for k in arr:

        if k[0]/n>k[1]+1:

            return True

    return False

while l + 1 != r:

    mid = (l + r) // 2

    if check1(mid):

        l = mid

    else:

        r = mid

n1 = l

l, r = 0, 1000000000

while l + 1 != r:

    mid = (l + r) // 2

    if check2(mid):

        l = mid

    else:

        r = mid

n2 = r

print(str(n2)+" "+str(n1))

记录失败

蓝桥杯小白赛

大数据必须这样输出。。。。

def max_number(N, M):
    num = [0] * N

    for i in range(N):
        if M >= 9:
            print(9,end="")
            M -= 9
        else:
            print(M,end="")
            M = 0

N, M = map(int, input().split())

if M > N*9:
    print(10**N - 1)
else:
    max_number(N, M)
上一篇
下一篇