摘要:
来自$\texttt{SharpnessV}$的省选复习计划中的莫队。 莫队算法是对一类暴力的优化。 如果我们能够在 \(\rm O(1)\) 的时间内由 \([l,r]\) 的答案推出 \([l\pm1,r\pm 1]\) 的答案,就可以考虑使用莫队。 我们对询问排序,首先将序列分为$\sqrt{ 阅读全文
摘要:
来自$\texttt{SharpnessV}$的省选复习计划中的二分图/网络流。 【模板】二分图最大匹配 给定一个二分图,需要找出最多的不相交的边。 比较简单的方法是匈牙利算法,每次找增广路然后直接增广即可。时间复杂度是$\rm O(NM)$。 #include<cstdio> #include<c 阅读全文
摘要:
来自$\texttt{SharpnessV}$的省选复习计划中的最短路问题。 最短路是图论一个经典模型,也是OI种的常考模型。 例题1:单源最短路径 对于只有正边权的图,\(\texttt{Dijkstra}\) 是目前最优的做法。 我们用堆维护当前图中 \(\texttt{Distance}\) 阅读全文
摘要:
来自$\texttt{SharpnessV}$的省选复习计划中的虚树/长链剖分。 虚树和长链剖分都可用于一类 树形$\rm DP$ 的优化。 Part 1:虚树 特点,多次询问,每次询问包括树上的$k$个点,$\sum k \le 2\times 10^6 $ 在可承受范围内。 对于每个询问,只包括 阅读全文
摘要:
来自$\texttt{SharpnessV}$的省选复习计划中的矩阵/线性基。 P3390 【模板】矩阵快速幂 模板。 矩阵乘法是$N3$的,快速幂是$\log T$,总的时间复杂度为$\rm O(N3\log T)$。 #include<bits/stdc++.h> #define rep(i,a 阅读全文
摘要:
来自$\texttt{SharpnessV}$的省选复习计划中的生成树。 P3366 【模板】最小生成树 从小到大排序,能加边则加边。 结论:任意一条没有加的边$u -v$,最小生成树上$u$和$v$之间路径上的边权一定不大于当前边的边权。 证明:反正,如果存在一条大于,我们可以加入当前边而删去最大 阅读全文
摘要:
来自$\texttt{SharpnessV}$的省选复习计划中的字符串。 P3370 【模板】字符串哈希 字符串哈希,一般 \(\rm H(S)=\sum\limits_{i=1}^{Len}bas^{Len-i}\times S_i \bmod P\)。这样我们对一个字符串预处理出它的前缀哈希值和 阅读全文
摘要:
来自$\texttt{SharpnessV}$的省选复习计划中的树上问题。 树上问题是$\rm OI$中必考的难点。 P5018 [NOIP2018 普及组] 对称二叉树 判断带点权有根二叉树是否同构。 因为有根且是二叉树,这极大简化了判断同构的过程。 我们定义函数 bool check(int x 阅读全文
摘要:
来自$\texttt{SharpnessV}$的省选复习计划中的基础多项式。 P3803 【模板】多项式乘法(FFT) 快速傅里叶变换$\rm FFT$,时间复杂度$\rm O(N\log N)$。 #include<bits/stdc++.h> #define rep(i,a,b) for(int 阅读全文
摘要:
P3387 【模板】缩点 \(\rm Tarjan\) 算法求线性求强连通分量。 算法的核心在于时间戳和栈的维护。 我们将每个强连通分量缩成一个点,将得到一个有向无环图$\rm DAG$,就可以在上面跑$\rm DP$。 #include<bits/stdc++.h> #define rep(i,a 阅读全文
摘要:
P5104 红包发红包 在$[0,w]\(中等概率发出一个红包,期望发出一个\)\dfrac{w}{2}\(的红包,即可以看成每次发出\)\dfrac{w}{2}$的红包。答案就是 \(w\times 2^{-k}\) 。 Code P7385 「EZEC-6」跳一跳 期望$E=\sum p(x)v 阅读全文
摘要:
来自$\texttt{SharpnessV}$的省选复习计划中的基础数论。 CF1355F Guess Divisors Count 交互题,给定$X\le10^{9}\(,每次可以询问\)\gcd (X,Q_i)$,\(Q_i\le 10^{18}\),并在 $22 $ 次询问内求出 \(X\) 阅读全文
摘要:
来自$\texttt{SharpnessV}$的省选复习计划中的组合数学。 由于作者非常菜所以只能随便写点基础的。 P3197 [HNOI2008]越狱 简单数数。越狱的方案数等于总方案数减没有越狱的方案数。 所以$Ans=mn-m\times (m-1){n-1}$ 。 #include<bits 阅读全文
摘要:
来自$\texttt{SharpnessV}$的省选复习计划中的分治算法。 分治,顾名思义,分而治之,一般能将 \(N^2\) 的时间复杂度优化至 \(N \log N\) 或$N\log^2 N$。 P7415 [USACO21FEB] Count the Cows G 观察一个对于边长为$3^n 阅读全文
摘要:
才知道有这么个神奇的玩意。 定义,\(n\) 个点,任意两点之间存在且恰好存在一条有向边的图成为 \(n\) 阶竞赛图。 性质 \(1\) :一定存在一条哈密顿路径。 证明:数学归纳法,\(n=1\) 显然成立,当 \(n-1\) 成立时的哈密顿路径,存在相邻两点$v_i,v_{i+1}$,使得 \ 阅读全文
摘要:
G 想到一个非常神奇的做法。 如果我们令第 \(i\) 个位置放入了 \(b_i\) 个球,那么总代价一定是 \(\prod(a_i + b_i)\)。 总方案数是 \(n^k\),我们只用求所有方案的代价之和。 对于一个代价,我们将它拆开,组合意义等价于选出一些 \(a_i\),剩下的选 \(b_ 阅读全文