235 字
1 分钟
Python 算法竞赛常用技巧速查
2026-02-01

对拍板子#

import os
os.system("g++ -std=c++23 std.cpp -o std.exe")
os.system("g++ -std=c++23 A.cpp -o A.exe")
kase = 0
while True:
os.system("python gen.py > A.in")
os.system("type A.in | std.exe > A.ans")
os.system("type A.in | A.exe > A.out")
if os.system("fc A.ans A.out > nul") != 0:
print("Wrong Answer on Case:", kase)
break
if kase % 100 == 0:
print(kase, "pass !!!")
kase = kase + 1

数据生成#

import random
random.randint(l, r)
random.choice(list) # 随机选一个
random.sample(list, k) # 随机不重复选k个
random.shuffle(list)

全排列#

import itertools
def generate_permutations(n):
return itertools.permutations(range(1, n + 1))
for p in generate_permutations(n):
v = list(p)
if check(v):
print(' '.join(map(str, p)))

pow(x, k)#

python中可以直接使用 pow(x, k) / pow(x, k, mod) ,不需要导入任何库

二分#

  • bisect_left(a, x):在有序数组 a 中找第一个 >= x 的位置
from bisect import bisect_left
i = bisect_left(a, x)

浮点数格式化输出#

print('%.4f' % a) # 保留 4 位小数,四舍五入

'%.4f' % a 等价写法

  • format(a, '.4f')
  • f'{a:.4f}'

float 无穷大#

  • 正无穷:float('inf')
  • 负无穷:float('-inf')
  • Python 中可参与比较、加减(但注意精度问题)

列表输出#

print(' '.join(map(str, list)))
print(*list, sep = ' ')
Python 算法竞赛常用技巧速查
https://dk-qwq.github.io/blog/posts/python-算法竞赛常用技巧速查/
作者
dk-qwq
发布于
2026-02-01
许可协议
CC BY-NC-SA 4.0