摘要: 题意简述: 有个 01 序列 s,1 表示这一位会做 1 的贡献,0 表示这一位不会做贡献,我们需要对另一个序列 c 进行重拍,当一个位置 i,它的 \(c_i \leq 前面未做贡献的位数\) 时,这一位将不会做贡献,我们需要对于合法的 c 计数。一个序列 c 合法当且仅当 \(贡献和 \ge m 阅读全文
posted @ 2025-11-25 20:06 Optimist_Skm 阅读(2) 评论(0) 推荐(0)
摘要: 全局二分: 考虑将问题差分成 “最后一个小于等于 k” 或 “第一个大于等于 k” 的形式,然后考虑先递归左/右儿子。 Code(以找第一个大于等于 k 为例): inline int get(int x, int l, int r, int k) { if (l == r) return l; p 阅读全文
posted @ 2025-10-24 20:49 Optimist_Skm 阅读(4) 评论(0) 推荐(0)
摘要: rt. 阅读全文
posted @ 2025-10-21 16:29 Optimist_Skm 阅读(3) 评论(0) 推荐(0)
摘要: 集合哈希:给每一个元素随机一个值,判断和是否相等(可重集)或异或和是否相等(不可重集)。 消消乐做法:对于每一数随机一个矩阵,另一个相同位置的数则为它的逆矩阵。 \(min(a, b) \iff a + b - max(a, b)\) 曼哈顿距离可以和切比雪夫距离相互转化。 \(O(nlogn)\) 阅读全文
posted @ 2025-07-29 20:55 Optimist_Skm 阅读(7) 评论(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)
摘要: 从小到大枚举排列:从 \(1 - n\) 插入每个数,第 \(i\) 个数有 \(i\) 种插法,所以可以枚举出 \(n!\) 种排列。 可行性 \(dp\),其中的表示以这个下标构成的方案是否可行。 背包 \(dp\) 中放物品的顺序是可以打乱的,所以当你需要撤销一个物品时,可以把它看做是此时最后 阅读全文
posted @ 2025-07-25 16:01 Optimist_Skm 阅读(6) 评论(0) 推荐(0)
摘要: 线性筛原理:当 \(i\ | \ prime_j\) 时,表示 \(i\) 中有一个质因子为 \(prime_j\), 那么接下来的质数一定不会成为最小的质因子,所以一个数只会被标记一次,即复杂度为 \(O(n)\).。 唯一分解定理:每一个有理数都能分解为有限个质数乘积。 性质:\(> \sqrt 阅读全文
posted @ 2025-07-25 16:01 Optimist_Skm 阅读(5) 评论(0) 推荐(0)
摘要: 当有两个只会对 正/负 数产生影响的操作,我们可以考虑对正负数分别维护一个数据结构。 当最短路有多个条件并且不能同时维护时,且两个条件值域较小时,可以考虑维护一个分层图和一个二维数组,层数表示当前第一个条件的代价,而每一层图中的边权都为第二个条件。 当最短路的值域较小,可以考虑用桶代替堆,\(O(1 阅读全文
posted @ 2025-07-25 16:00 Optimist_Skm 阅读(3) 评论(0) 推荐(0)
摘要: 考虑线段树能不能维护一个操作: 考虑如何合并线段树上的两个子树 考虑如何给一个点叠加 \(tag\)。 \(gcd\) 的性质:一个区间的 \(gcd\) 是这个区间(在前面加上一个 \(0\))的差分数组的 \(gcd\)。 例子: \(gcd(1, 3, 4, 6) \rightarrow gc 阅读全文
posted @ 2025-07-25 16:00 Optimist_Skm 阅读(7) 评论(0) 推荐(0)