每日一题

DP

技巧类DP

数位DP

DFS

贪心

位运算

二分

前缀和

双指针

数据结构

数学

一眼题

刷题技巧

巧用内置库

  • 计算前缀和:list(itertools.accumulate(l, initial=0))
  • 获取连续重叠对 for a, b in itertools.pairwise(nums):
  • 从nums中选2个元素组合/排列 for i in itertools.combinations/permutations(nums, 2):
  • check函数二分:bisect_left(range(1_000_000_001), True, key=check)

巧用数据结构

  • 有序数组 from sortedcontainers import SortedList

其他技巧

  • 死循环,同时记录当前轮数 for i in count(1):
  • 数组每行最大值:mx_row = list(map(max, nums))
  • 数组每列最大值:mx_col = list(map(max, zip(*nums)))
  • 1_000_000_001表示10**9+1
  • 设置dict的value默认值为ind:defaultdict(lambda: inf)
  • enumerate(nums, start=1)