分类目录归档:算法竞赛

DP 状态设计


DP 状态设计

状态定义与递推方向设计一类题的合集(区别于《优化DP》的复杂度优化技巧类),随训练持续更新。

CF 2078D - Scammy Game Ad(反向递推:等效乘数)

https://codeforces.com/problemset/problem/2078/D

一、题意

n 对门,每对门都有左、右两个通道。初始时,左右通道各有一个人,并且这些人不能中途切换通道。

当我们通过第 i 对门的某个具体门(左或右)时: * 如果是加法门 (+ a):会额外产生 a 个新的人。该通道内原先存在的人数不变。 * 如果是乘法门 (x a):假设该通道在操作前有 P 个人,操作后会

Read more

图论


图论

图论一类题的合集,随训练持续更新。

DFS 与建图

CF 29C - Mail Stamps(唯一路径重建)

题意:从起点按序输出唯一路径
python写一直re,后面发现需要使用sys.setrecursionlimit(int(2 * 10**5))扩大python默认递归深度限制,以达到题目要求
邻接表建图用字典的setdefault方法初始化空列表最简洁

import sys
sys.setrecursionlimit(int(2 * 10**5))
n = int(input())
vised = {}
graph = {}
in_degree = {}
for _ in ra

Read more

线段树


线段树

线段树一类题的合集,随训练持续更新。

线段树模板(区间修改 + 区间查询 + 懒标记)

用python重写下线段树模板,线段树的记忆点在于脑子里要有线段树,特点是自顶向下构建

class segment_tree:
    def __init__(self, nums):
        n = len(nums)
        self.nums = nums
        self.tree = [0] * 4 * n
        self.tag = [0] * 4 * n

    def update(self, root):
        self.tree[r

Read more