坑点/trick/结论

  • \[n \brace m\]数组

    \[n \brack m\]函数

$$n \brace m$$

  $$n \brack m$$
  • 最大流必定要成对加边,不然^1时编号就乱了优化

  • (阿狸的打字机)dfs进入时树状数组上 Modify(dfn[u], 1) 回溯时 Modify(dfn[u], -1),能够用子树和求从根到 u 的链的一部分ui

  • 处理1-n的阶乘和阶乘逆元之后 能够O1算1-n某个数的逆元 (fac[x-1]*ifac[x])spa

  • cdq分治能够用std::mergecode

  • 正下标:it

\(\max\limits_{1\leq n \leq n}\)class

\max\limits_{1\leq n \leq n}

若是直接\limits布星就\mathop括起来:\[\mathop{\left[ \begin{matrix} 0& 0& 0\\ 0& 0& 0\\ 0& 0& 0\\ \end{matrix} \right]}_{123}\]循环

\mathop{\left[ \begin{matrix}
    0&      0&      0\\
    0&      0&      0\\
    0&      0&      0\\
\end{matrix} \right]}_{123}
  • 模任意数n的意义下,1..n 的逆元互不相同map

  • 位运算的东西必定要想一想按位考虑

  • DFT->快速幂->IDFT这种作法须要知足长度次方不大 就是代码里的nw要开到长度次方以上,不然多出来的会被模回去(NTT/FFT是循环卷积),不求循环卷积 长度*次方又很大只能ln+exp

  • 森林点数-边数=连通块数

  • 状压DP有用状态不多能够用map存 (听说司机这样过掉了应该只拿40分的题)

  • 并查集merge时 if ((x = Find(x)) == (y = Find(y)) return (好像之前直接fa[x]=y出过问题来着= =

  • 作题先把样例手算完,代码过不了样例按照代码模拟样例

  • 对拍 对拍 对拍 对拍

  • 线段树维护区间最大子段和的null.sum不能是-inf

  • 斜率优化若是已经维护出了凸壳,不要管什么设 j<k且j比k优,从而推出一个j和k的斜率跟某个与i相关的量的大小关系。这样太麻烦,直接比较DP(sta[i]转移到i), DP(sta[i+1]转移到i),若是sta[i+1]更优就++top; (凸壳上函数是单峰的)

  • 相乘为彻底平方数的两个数,知足 其中一个数为0 或者 将他们的彻底平方数因子除掉,获得的数相同

  • 非质数的最小质因子最大是 \(\sqrt n\) 级别的,能够记忆化存一些函数值 好比 \(\sigma_k\) (全部因子的k次幂之和) 能够记忆化存下全部的 \(\sigma_k(p^k)\) 减小计算量

\[\sigma _k\left( i\times p \right) =\sigma _k\left( \frac{i}{p_r} \right) \times \sigma _k\left( p^{r+1} \right)\]

\[\sigma_k(p^r)=\sum_{j=0}^{r}(p^j)^k=\sum_{j=0}^{r}p^{jk}\]

n=k=1e7,线性筛要用到的 \(\sigma_k\)\(p\)\(r\) 最大仅为 \(3137\)\(23\)

\[\binom n k \equiv [n \And k=k] \pmod 2\]

相关文章
相关标签/搜索