07 2025 档案

摘要:集合哈希:给每一个元素随机一个值,判断和是否相等(可重集)或异或和是否相等(不可重集)。 消消乐做法:对于每一数随机一个矩阵,另一个相同位置的数则为它的逆矩阵。 \(min(a, b) \iff a + b - max(a, b)\) 曼哈顿距离可以和切比雪夫距离相互转化。 \(O(nlogn)\) 阅读全文
posted @ 2025-07-29 20:55 Optimist_Skm 阅读(9) 评论(0) 推荐(0)
摘要:当需要维护一个子串的哈希值,可以用哈希前缀和:\(hash_{l-r} = pre_r - pre_l \times base^{r - l + 1}\)。 哈希常搭配二分使用。 \(gp\_hash\) 十分快。 当 \(\sum len_i \le 10^5\) 时,它的长度的种类数是 \(\s 阅读全文
posted @ 2025-07-29 10:46 Optimist_Skm 阅读(6) 评论(0) 推荐(0)
摘要:\(E(x) = \sum_{i \in x} val_i \times P(i) \to \sum_{i \in x} E(i)\) \(E(x+y) = E(x) + E(y)\) \(E(aX + b) = a\times E(X) + b\) \(E(x^n)\) 表示 \(x\) 这个事件 阅读全文
posted @ 2025-07-26 15:38 Optimist_Skm 阅读(6) 评论(0) 推荐(0)
摘要:线性筛原理:当 \(i\ | \ prime_j\) 时,表示 \(i\) 中有一个质因子为 \(prime_j\), 那么接下来的质数一定不会成为最小的质因子,所以一个数只会被标记一次,即复杂度为 \(O(n)\).。 唯一分解定理:每一个有理数都能分解为有限个质数乘积。 性质:\(> \sqrt 阅读全文
posted @ 2025-07-25 16:01 Optimist_Skm 阅读(7) 评论(0) 推荐(0)
摘要:从小到大枚举排列:从 \(1 - n\) 插入每个数,第 \(i\) 个数有 \(i\) 种插法,所以可以枚举出 \(n!\) 种排列。 可行性 \(dp\),其中的表示以这个下标构成的方案是否可行。 背包 \(dp\) 中放物品的顺序是可以打乱的,所以当你需要撤销一个物品时,可以把它看做是此时最后 阅读全文
posted @ 2025-07-25 16:01 Optimist_Skm 阅读(6) 评论(0) 推荐(0)
摘要:当有两个只会对 正/负 数产生影响的操作,我们可以考虑对正负数分别维护一个数据结构。 当最短路有多个条件并且不能同时维护时,且两个条件值域较小时,可以考虑维护一个分层图和一个二维数组,层数表示当前第一个条件的代价,而每一层图中的边权都为第二个条件。 当最短路的值域较小,可以考虑用桶代替堆,\(O(1 阅读全文
posted @ 2025-07-25 16:00 Optimist_Skm 阅读(4) 评论(0) 推荐(0)
摘要:考虑线段树能不能维护一个操作: 考虑如何合并线段树上的两个子树 考虑如何给一个点叠加 \(tag\)。 \(gcd\) 的性质:一个区间的 \(gcd\) 是这个区间(在前面加上一个 \(0\))的差分数组的 \(gcd\)。 例子: \(gcd(1, 3, 4, 6) \rightarrow gc 阅读全文
posted @ 2025-07-25 16:00 Optimist_Skm 阅读(8) 评论(0) 推荐(0)
摘要:\(tarjan\) 染色的倒序是图的拓扑序。 缩点的时间复杂度: \(O(n+m)\)。 当差分约束的时间复杂度不优时,考虑进行缩点后拓扑排序。[SCOI2011] 糖果 一个点可能属于多个极大点双,但只可能属于一个极大边双。 如果一个图的所有边都是割边,那么这个图是树。 在计算割点时,一个父节点 阅读全文
posted @ 2025-07-25 16:00 Optimist_Skm 阅读(5) 评论(0) 推荐(0)
摘要:线段树维护区间第 \(k\) 大,对一个桶建一个线段树(权值线段树),每次查找进行线段树上二分,查找桶中的第 \(k\) 大。 \(trick\):考虑对区间询问按 \(r\) 排序,然后依次从左往右扫数组,那么此时区间询问就变为全局询问,只用树状数组维护即可。P1972 [SDOI2009] HH 阅读全文
posted @ 2025-07-21 10:45 Optimist_Skm 阅读(7) 评论(0) 推荐(0)
摘要:求欧拉回路: void dfs(int x) { for(int &i = hd[x]; i < e[x].size(); ) dfs(e[x][i++]); stc[++top] = x; } 用 \(Floyd\) 求 有向图 的最小环: 将 \(f_{i,i}\) 设置成 \(+\infty\ 阅读全文
posted @ 2025-07-18 19:42 Optimist_Skm 阅读(4) 评论(0) 推荐(0)
摘要:\(shuffle(\ begin,\ end,\ 随机数函数\ )\) (打乱数组) \(nth\_element()\) (第 \(k\) 小元素) \(fill\) (填充数组) \(bitset\): \(bitset()\) 初始化每一位都是 \(false\)。 \(bitset(val 阅读全文
posted @ 2025-07-17 10:05 Optimist_Skm 阅读(6) 评论(0) 推荐(0)
摘要:\(t1\) 当 \(i \& n == i\) 时,\(C_n^i\) 是奇数。 \(t2\) 从大往小填。 \(t3\) 正难则反,根号分治,对于一个长度为 \(n\) 的数组中,不同数字的出现次数的种类数最多只有 \(\sqrt{n}\) 种。 \(t4\) 当 \(dfn_{v'} \in 阅读全文
posted @ 2025-07-16 19:37 Optimist_Skm 阅读(4) 评论(0) 推荐(0)