07 2022 档案
摘要:1.E - Red and Blue Graph 题意:n个点m条边的图,选k个点染色,使得特殊边的个数为偶数,特殊边指连接这条边的2点一个染色一个未染色 题解: 由此可见,特殊边的奇偶性和选的k个点的度数和的奇偶性相同 那么我们进行枚举,枚举奇数度数的点选x个,偶数度数的点选k-x个 点击查看代码
阅读全文
摘要:#虚树 讲解 ##模板 点击查看代码 struct Tree{ //原树 int tot,head[maxn],nx[maxn],to[maxn]; ll w[maxn]; void add(int x,int y,ll z){ to[++tot]=y;nx[tot]=head[x];head[x]
阅读全文
摘要:##分治 分治作为一种思想在算法中被广泛使用,比如归并排序、线段树之类的算法都是使用了分治的思想。 除了这些算法的底层原理,分治单独拿出来运用的其中一种场景是作为一种统计类算法使用。 统计类问题一般指不带修改,静态查询类的问题。但是不同于静态查询问题,统计类问题一般要求“全查”,例如枚举所有的子区间
阅读全文
摘要:##动态树 树上查询问题是指,给定一个图论中的树结构,需要对树上的子树或者链进行一系列增删改查的问题。 和序列问题中一般常说的“动态”和“静态”不同。 动态树问题一般指树结构发生改变。 *注意:一般对于纯换根(change root)操作,不视为是动态树问题。 #LCT结构 ###前置知识1:链分解
阅读全文
摘要:参考博客 ##子树类查询问题 dsu on tree和长链剖分都是解决子树类静态查询问题的统计类算法。 这类问题首先要是“子树”查询,并且是“静态”不带修改的。 注意某些问题其实不太有必要上dsu on tree,比如子树元素和,子树元素最大值之类的。(可合并区间信息) 例如子树众数,子树元素种类数
阅读全文
摘要:1.Ex - Yet Another Path Counting 题意: 的棋盘,每个格子有一个颜色标号 两个有相同颜色棋格,它们的路径方案数为从其中一个棋格只能向下或向右移动到另一个棋格的方案数 问任何两个有相同颜色棋格的路径方案数的总和
阅读全文
摘要:#树链剖分 树链剖分是为了解决树上链信息维护的问题。 利用线段树等结构,可以维护数组中的增删改查问题。 树链剖分的作用其实就是将整颗结构树分解成若干段数组,然后使用一个数据结构来维护每一条链的信息 (一般来讲不会使用平衡树去维护树链,不然你还不如直接上LCT呢) 如果是数组上的问题,一般直接使用线段
阅读全文
摘要:####二叉树 对于一颗二叉树,它有三种遍历方式:前序、中序、后序 前序(根左右),中序(左根右),后序(左右根) 这三种顺序其实都有使用的场景(主要是在分治算法中考虑是递归前,递归进行中,递归后)的区别。 ###多叉树 在多叉树里面,常用的dfs序其实也有三种:dfs序、扩展dfs序、欧拉序 df
阅读全文