08 2020 档案
摘要:有时,会遇到这样的问题:求 。 其中,k很小,n很大,x可以是数,矩阵,或多项式。 通常,有两种做法: 将x放入矩阵中,并依次把拆开,把系数放入矩阵(其实就是杨辉三角)。 这个方法比较容易,但时间复杂度为。 使用
阅读全文
摘要:首先,考虑一个问题:有一张有向图,选择最少的点,使得每个点都能由这些点出发而到达。 可以用如下方法: 先tarjan缩点,变成DAG。然后在入度为0的SCC中各选一个点。 正确性显然。 对于这道题,先预处理出所有数之间的关系,方法等下讲。然后暴力就是枚举种情况,再套用上述做法。 正解就是
阅读全文
摘要:题意: 给定,,求x子树里深度不超过dep[x]+d的所有点中有多少种颜色。 强制在线。 一般的,询问区间颜色数时,可以求出每个数的后继,然后就变成了区间内大于某数的数,进而使用树状数组或主席树。 然而,询问树上的颜色数,还有一种更好的方法: 考虑某种颜色的贡献: 把这种颜色的所有点
阅读全文
摘要:涉及到RMQ,RMQ之和,最大子矩形等,子矩形数量等问题,可以考虑笛卡尔树。 笛卡尔树就是每次找到区间中的最值,按照这个位置将区间分为2份递归建树。 这样,最值就是lca了。 RMQ之和就是lca之和,可以枚举lca算贡献。 最大子矩形等就是每个点的权值乘以它对应的区间长度的最大值。 子矩形数量就是
阅读全文
摘要:这些方法可以用于最短路,网络流,连通性等问题。 对于区间到区间/点的连边,直接上线段树就行了,这个很简单 对于点到区间/子矩阵的连边(最短路问题),还可以用线段树/KD树维护dis数组,进行区间和某数取min的操作。 P5471 [NOI2019]弹跳 对于序列的某个前/后缀的连边,可以直接把这个序
阅读全文