摘要:
DilWorth定理内容: 对于任意有限偏序集,其最大反链中元素的数目必等于最小链划分中链的数目。 反过来,对于任意有限偏序集,其最长链中元素的数目必等于其最小反链划分中反链的数目。 例题:给一个序列,每次取走一个最长上升子序列,问至少要几次。 相当于求最小链划分。 那么,求出反图的最长链。 显然, 阅读全文
摘要:
网络流,差分约束可以转化。 单纯形法,复杂度未知。 这个代码就是把系数放到(1n)*(1m)。 把约束条件放到第0列。最大化的系数放到第0行。 对偶:就是处理大于等于。 把矩阵转置即可。 void pivot(int x,int y) { double t=sz[x][y];sz[x][y]=1; 阅读全文
摘要:
题意:给出若干个矩形,给每个确定方向,使得宽不相同,高的和最大。 暴力:二分图匹配,\(O(n^3)\)。 正解:把矩形看成边,那么定向后是基环内/外向树。 连通块是基环树只有一种方案。 连通块是树采用树规。 注意自环重边。 \(O(n)\)。 阅读全文
摘要:
这题我的方法比较奇怪。 题意: 有$k$种物品,第$i$个物品有$a_i$个,权值为$2^i$。 求有多少个$y$,使得可以选出$x$组物品,每组的和都为$y$。 先考虑如何判定一个$y$是否可行: 从最高位开始,依次求出第i位需要的数目$b_i$。若$y$的第$i$位为1,则$b\leftarro 阅读全文
摘要:
有时,会遇到特殊字符串匹配。 第一种 通配符。 这时通常要用NTT。 记两个字符串的差距为$A_i\times B_i\times (A_i-B_i)^2$。 若每个位置的差距之和为0,则字符串相等。 若是通配符,把$A_i/B_i$变为0即可。 把式子拆开后,反转其中一个串,用NTT优化计算。 第 阅读全文
摘要:
循环矩阵,就是循环的矩阵。 循环矩阵有一些性质: 两个循环矩阵,相乘后,仍是循环矩阵。 这样,在进行矩阵乘法时,只维护第一行即可。 复杂度暴力$O(n^2)$。其实是循环卷积,可以用NTT优化至$O(n\log n)$。 循环矩阵的行列式也可以快速计算。 对于$n*n$的矩阵,设$w^k$为$n$次 阅读全文
摘要:
有时,会遇到这样的问题:求 \(\sum_{i=1}^n i^kx^i\)。 其中,k很小,n很大,x可以是数,矩阵,或多项式。 通常,有两种做法: 将x放入矩阵中,并依次把$(a+1)i$拆开,把系数放入矩阵(其实就是杨辉三角)。 这个方法比较容易,但时间复杂度为$O(k3\log n)$。 使用 阅读全文
摘要:
首先,考虑一个问题:有一张有向图,选择最少的点,使得每个点都能由这些点出发而到达。 可以用如下方法: 先tarjan缩点,变成DAG。然后在入度为0的SCC中各选一个点。 正确性显然。 对于这道题,先预处理出所有数之间的关系,方法等下讲。然后暴力就是枚举$2n-1$种情况,再套用上述做法。 正解就是 阅读全文