235 字
1 分钟
Python 算法竞赛常用技巧速查
对拍板子
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 = 0while 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 itertoolsdef 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-算法竞赛常用技巧速查/