随笔分类 - 总结
摘要:考前写题解增加RP。 D1T1: 考虑按照列DP。对于每一列选择的鱼的区间进行决策。每列中被选择的y坐标最大的鱼,需要被左面或右面覆盖。 假设我们决策好了前i列的方案,考虑第i列被选择的y坐标最大的鱼是否被第i-1列覆盖。 若没有覆盖,需要记录i列中选择的y坐标最大值。此时他需要被第i+1列覆盖,因
阅读全文
摘要:通常,线段树是一个log的。 但是,有的用于解决特殊问题的线段树,是两个log的。 这个额外的log有两种情况: 第一种就是添加的标记比较特殊,使得pushdown时可能递归。 通过诡异证明,使得均摊复杂度为。 第二种就是pushup时,需要递归到其中一个子树,这样每次pus
阅读全文
摘要:背包问题是一大类问题。 我们不妨设有个物品,背包容量为,每个物品大小为,个数为,价值为。 大写字母表示求和。 01背包,完全背包,分组背包:直接dp即可。时间复杂度。 多重背包:单调队列优化或二进制拆分。或。枚举余数进行
阅读全文
摘要:DilWorth定理内容: 对于任意有限偏序集,其最大反链中元素的数目必等于最小链划分中链的数目。 反过来,对于任意有限偏序集,其最长链中元素的数目必等于其最小反链划分中反链的数目。 例题:给一个序列,每次取走一个最长上升子序列,问至少要几次。 相当于求最小链划分。 那么,求出反图的最长链。 显然,
阅读全文
摘要:有时,会遇到特殊字符串匹配。 第一种 通配符。 这时通常要用NTT。 记两个字符串的差距为。 若每个位置的差距之和为0,则字符串相等。 若是通配符,把变为0即可。 把式子拆开后,反转其中一个串,用NTT优化计算。 第
阅读全文
摘要:循环矩阵,就是循环的矩阵。 循环矩阵有一些性质: 两个循环矩阵,相乘后,仍是循环矩阵。 这样,在进行矩阵乘法时,只维护第一行即可。 复杂度暴力。其实是循环卷积,可以用NTT优化至。 循环矩阵的行列式也可以快速计算。 对于的矩阵,设为次
阅读全文
摘要:有时,会遇到这样的问题:求 。 其中,k很小,n很大,x可以是数,矩阵,或多项式。 通常,有两种做法: 将x放入矩阵中,并依次把拆开,把系数放入矩阵(其实就是杨辉三角)。 这个方法比较容易,但时间复杂度为。 使用
阅读全文
摘要:题意: 给定,,求x子树里深度不超过dep[x]+d的所有点中有多少种颜色。 强制在线。 一般的,询问区间颜色数时,可以求出每个数的后继,然后就变成了区间内大于某数的数,进而使用树状数组或主席树。 然而,询问树上的颜色数,还有一种更好的方法: 考虑某种颜色的贡献: 把这种颜色的所有点
阅读全文
摘要:涉及到RMQ,RMQ之和,最大子矩形等,子矩形数量等问题,可以考虑笛卡尔树。 笛卡尔树就是每次找到区间中的最值,按照这个位置将区间分为2份递归建树。 这样,最值就是lca了。 RMQ之和就是lca之和,可以枚举lca算贡献。 最大子矩形等就是每个点的权值乘以它对应的区间长度的最大值。 子矩形数量就是
阅读全文
摘要:这些方法可以用于最短路,网络流,连通性等问题。 对于区间到区间/点的连边,直接上线段树就行了,这个很简单 对于点到区间/子矩阵的连边(最短路问题),还可以用线段树/KD树维护dis数组,进行区间和某数取min的操作。 P5471 [NOI2019]弹跳 对于序列的某个前/后缀的连边,可以直接把这个序
阅读全文
摘要:通常,矩阵树定理算出的生成树是边权乘积的和。 如果计算所有生成树边权和的和,比较暴力的方法就是枚举一条边,然后计算包含这条边的生成树个数。 这样的时间复杂度是的,最坏为。 考虑优化: 对于一条边权为w的边,将边权设为关于x的多项式。 这样,容易证出,最后的一
阅读全文
摘要:通常,构造最小割时,我们对残量网络进行bfs,设能够到达的集合为S,不够到达的集合为T (遍历时考虑反向边),则从S指向T的边被割掉。 但是有时,需要求字典序最小的最小割。 我们可以把所有的边从小到大排序,并遍历。 如果当前边可以删除,那么就删除它,否则继续。 一条边能被删除有2个
阅读全文
摘要:[toc] 转对偶图 平面图的最小割对应着对偶图的最短路。 方法: 首先把每条边拆成双向边。 然后,把每个点的所有出边按极角进行排序。 每次:从任意一条未标记的边开始,把它标记,并找到v的出边中极角序在之后的第一条边。 直到找到一条被标记的边。 这时,我们就找到了一个面。
阅读全文
摘要:[toc] kd 树是一种分割 k 维数据空间的数据结构。 它通常被用来解决 k 维空间中的距离最值 ( 第 k 小值 ) 问题。 当然,它也能解决其它问题。 建树的方法: 假设我们的平面上的点的序列为 [l,r] 。 我们先选定一个维度为基准,不妨假设是 x 维度。 然后我们找出 [l,r] 这些
阅读全文
摘要:首先,麻将可以DP。 用DP枚举顺子,因为3个顺子可以变成3个刻子,因此同一位置的顺子数目不会超过2。 这样,在DP时,记录前两个位置选择的顺子个数,即可。状态数为9。 将9个状态的值进行压缩(可以增加顺子和刻子的数量),并记录转移,可以得到麻将自动机。 用这个自动机可以判断是否胡牌等。 在胡牌种类
阅读全文
摘要:以最小费用最大流为例,我们可以通过退流来消除费用为负数的边。 具体过程: 不妨设有一条从到的容量为费用为的边()。 先强制满流,把答案加上。 之后,从到,到各连一条容量为,费用为0的边,用来调整流量。这两条边要使用
阅读全文
摘要:回文自动机是接受一个字符串的所有回文子串的自动机。 回文自动机中每个点代表原串的一个回文子串。 维护两种指针:,。 点 的 指针指向在这个点代表回文串两端同时加字符 后得到的回文串。 指针指向
阅读全文
摘要:有时,我们会遇到这样的问题: 在一个树上选定一些点,每个点能覆盖一定范围的点……之类 比如: CF70E Information Reform P4845 LJJ爱数树 P3267 [JLOI2016/SHOI2016]侦察守卫 Rbtree 通常,我们有两种做法: 方法一 我们对于每个点,考虑距离
阅读全文
摘要:Dinic #include <stdio.h> #define MN 100010 #define MM 100010 #define inf 99999999 int fr[MN],ne[MM],v[MM],w[MM],bs=0; int jl[MN],S,T,N,dl[MN],dy[MN];
阅读全文