在竞赛编程中用于简化输入输出过程,以及定义一些常用的数据结构和算法。这样的代码块通常放在程序的开头。
import bisect
import sys
import copy
from collections import deque, defaultdict
import heapq
from itertools import accumulate, permutations, combinations
import math
input = lambda: sys.stdin.readline().rstrip("\r\n")
printf = lambda d: sys.stdout.write(str(d) + "\n")
INF = int(1e12)
# INF = 0x3f3f3f3f3f3f
# sys.setrecursionlimit(100000)
def read():
line = sys.stdin.readline().strip()
while not line:
line = sys.stdin.readline().strip()
return map(int, line.split())
def I():
return int(input())
这部分代码是导入Python标准库中的一些模块和函数,它们包括:
bisect
:提供了二分查找和插入的功能。sys
:提供了与 Python 解释器进行交互的函数。copy
:提供了复制对象的功能。deque
:双端队列,可以在两端快速添加和删除元素。defaultdict
:提供了一种创建默认值的字典。heapq
:提供了实现堆(优先队列)算法的函数。accumulate
:提供了对可迭代对象进行累积操作的函数。permutations
:提供了计算排列的函数。combinations
:提供了计算组合的函数。math
:提供了数学运算的函数。
input
:定义了一个名为input
的函数,使用lambda
表达式实现,作用是从标准输入中读取一行,并移除行末的换行符。printf
:定义了一个名为printf
的函数,使用lambda
表达式实现,作用是将传入的参数以字符串形式写入标准输出,并在末尾加上换行符。INF
:定义了一个名为INF
的常量,表示无穷大,其值为10的12次方(即1e12)。read
:定义了一个名为read
的函数,作用是从标准输入读取一行,并将其转换为整数列表返回。I
:定义了一个名为I
的函数,作用是从标准输入读取一个整数并返回。
(***重点***)骗分技巧:骗分贴
如果你想使用集合(set)来移除相邻重复的元素,你可以简单地将列表转换为集合,然后再转换回列表。集合的特性是它会自动去除重复元素。下面是使用集合的修正版本代码:
def bianyuan(a):
return list(set(a))
a = input("请输入一个字符串:")
result = bianyuan(a)
print("移除相邻重复元素后的列表:", result)
''.join
是一个字符串方法,它用于将可迭代对象中的元素连接成一个字符串。通常的用法是将一个列表中的字符串元素连接成一个字符串。
words = ['Hello', 'World']
result = ' '.join(words)
print(result) # 输出: Hello World
使用math
模块中的ceil()
和floor()
函数来进行向上和向下取整操作
二分法:洛谷:二分查找与二分答案
bisect 库的二分法
bisect
模块提供了一些用于操作有序列表的函数,其中最常用的包括:
-
bisect.bisect_left(a, x, lo=0, hi=len(a))
: 返回在有序列表a
中插入元素x
后的索引,如果元素已经存在,则返回应该插入的位置的左侧索引。可选参数lo
和hi
可以限定搜索范围,默认为整个列表的开始和结束。 -
bisect.bisect_right(a, x, lo=0, hi=len(a))
: 返回在有序列表a
中插入元素x
后的索引,如果元素已经存在,则返回应该插入的位置的右侧索引。可选参数lo
和hi
可以限定搜索范围,默认为整个列表的开始和结束。 -
bisect.insort_left(a, x, lo=0, hi=len(a))
: 将元素x
插入到有序列表a
中的适当位置,保持列表的有序性。如果元素已经存在,则插入在左侧。可选参数lo
和hi
可以限定搜索范围,默认为整个列表的开始和结束。 -
bisect.insort_right(a, x, lo=0, hi=len(a))
: 将元素x
插入到有序列表a
中的适当位置,保持列表的有序性。如果元素已经存在,则插入在右侧。可选参数lo
和hi
可以限定搜索范围,默认为整个列表的开始和结束。
excel:
- 问号(?)代表任意单个字符
- 星号(*)代表任意多个字符
-
Excel 是一个编辑器,能快速填充、统计数据,不用编写程序。Excel 能非常方便地处理简单的数列、日期类统计问题。以本题为例:在第一个单元格中输入 1 ,再选择“填充”→“序列”选项,打开“序列”对话框,在其中设置“终止值”为 2020 ,单击“确定”按钮,即可得到 1 至 2020 的数列;然后用“替换”功能将 2 替换成任何字符,从弹出的替换结果对话框中可以看到“完成 624 处替换”的提示,得到答案为 624 。