随笔分类 - 算法学习笔记
摘要:二维数点/二维偏序 模型: 给定二维点集,给定矩阵集,问每个矩阵中有多少个点。 此处二维偏序关系的问题也大都如此。 这里使用树状数组和二维前缀和容斥拆解思想求解。 例题: P2163 [SHOI2007] 园丁的烦恼 代码: #include <bits/stdc++.h> using namesp
阅读全文
摘要:扫描线 应用:一般用于计算多个矩形的总面积(重叠算一次)、总周长、最大重叠区域权值等问题。 总结: 运用线段树来实现。 计算多个矩形的总面积(重叠算一次),虽然是区间修改,但是由于我们不用更新到子树上,所以不需要\(pushdown\). 最大重叠区域权值问题,一般需要需要基本转化,比如从二维数点问
阅读全文
摘要:调和级数枚举倍数模型 参考博客: 算法学习笔记27:素数筛法【埃氏筛法、线性筛法】 OI&ACM]调和级数枚举倍数模型 板子(时间复杂度\(O(nlogn)\)): for(int i = 1;i<=n;i++) { for(int j = i;j<=n;j += i) { ??? } } 应用:
阅读全文
摘要:用bitset做的一些题 代表的意义 \(1.\)一个序列的全或加(\(01\)背包) 数组\(a\)中去任意数量的数累加起来的所有情况: bitset<N> f; for(auto x : a) { f |= f << x; } 其中,\(f[idx] == 1\)表示存在起码一种组合加法,使得他
阅读全文
摘要:线性求逆元 时间复杂度:\(O(n)\) 问题:求取\(1...n\)关于质数\(p\)的逆元。 应用举例:求取组合数\(C_n^m \ mod \ p\),其中\(1 \leq n,m\leq10^7,p = 998244353\)。 \[C_n^m \equiv \frac {n!} {(n-m
阅读全文
摘要:拆位问题小总结 通用表达 异或前缀和: \[\begin{align*} s _ k = \bigoplus_{i= 1} ^ ka_i \\ \end{align*} \]\[\begin{align*} f(l,r) = \bigoplus_{i = l}^ra_i = s_r \oplus s
阅读全文
摘要:Kurskal重构树 推荐学习博客: [严格鸽:ACM教程之 Kruskal重构树] Kruskal 重构树 学习记录加训练计划 Kruskal 重构树学习笔记 - 寂静小屋 - 洛谷博客 瓶颈 我们定义图上\(u \longrightarrow v\)路径的瓶颈为,这条路径上边权的最大值。 我们希
阅读全文