Trick

Trick:

  1. \(x\) 与各位数之和模 \(9\) 同余(CF10C Digital Root
  2. st 表 和 线段树 可以存 \(\gcd\)
  3. 注意函数增减性(CF1632D New Year Concert
  4. dp 时若下标太大,可以调换下标和存储的数值(CF1974E Money Buys Happiness
  5. 贪心不成立时,可以用反悔贪心(CF1974G Money Buys Less Happiness Now
  6. 乘法一般比加法更优(CF1872G Replace With Product
  7. '(' 看成 \(+1\),')' 看成 \(-1\)CF1976D Invertible Bracket Sequences
  8. atan2 可以求角度(CF257C View Angle
  9. 正难则反(容斥原理)(CF803F Coprime Subsequences
  10. 抓住数据的特殊性质,如 \(10^{18}\)CF468C Hack it!
  11. 可以贪心+dp(贪心推性质,用 dp 做),经典单调队列优化 (CF797F Mice and Holes)
  12. 可以先取一个特殊点来做,通过特殊点的特殊性质来解题 (CF1559D2 Mocha and Diana (Hard Version))
  13. 数据很大时,可以考虑能否缩小范围,后面特殊处理 (CF1956E2 Nene vs. Monsters (Hard Version))
  14. \(f_{i,j,k}\) 表示消除区间 \([i,j]\)\(j\) 右边恰好 \(k\) 个与位置 \(j\) 相同字符的答案(CF1107E Vasya and Binary String
  15. 位运算可以在二进制下一位一位考虑(P4551 最长异或路径
  16. mex 等价于 总和<区间长度 用线段树二分找 (CF817F MEX Queries)
  17. 分块,用 unordered_multiset 维护块内是否存在一个数(CF551E GukiZ and GukiZiana
  18. 抓住题目的特殊性质,如 CF2038K Grid Walk,发现从一个与 \((n,n)\) 互质的位置 \((a,b)\)\((n,n)\) 的答案为 \(a+b\),而且 \((a,b)\) 不会很大,暴力 dp 即可。
  19. 出现偶数次的数的异或和->出现过的数的异或和^去重后的数的异或和->类似于 hh 的项链 树状数组维护(CF703D Mishka and Interesting sum
  20. 减少不必要的查询->建线段树时用 st 表维护值(CF803G Periodic RMQ Problem
  21. \(1\)\(n\) 的最小公倍数,可以筛质数的同时找每个质数的 \(x\) 次是否存在来更新答案以及 \(x\)P4626 一道水题 II
  22. 对于非递增序列 \(d_1,d_2,\dots,d_n\),该度数序列可简单图化当且仅当 \(\forall k\in [1,n],\sum_{i=1}^{k}\le k(k-1)+\sum_{i=k+1}^{n} \min(d_i,k)\)(Erdős–Gallai 定理)(CF1091E New Year and the Acquaintance Estimation
  23. \(\gcd(a_l,a_{l+1},\dots,a_r)=\gcd(a_l,\gcd(a_{l+1}-a_l,\dots,a_r-a_{r-1}))\)P10463 Interval GCD
  24. 非重组合 \(C_{n}^{m}\),可重组合 \(C_{n+m-1}^{m}\)。上升 -> 组合后排序 (P5135 painting
  25. 分类讨论边的类型(最小生成树上边 or not)来计算答案(CF733F Drivers Dissatisfaction
  26. 并查集可以跳过很多无效答案,可以用来优化暴力 (CF200A Cinema
  27. 可以把石子看成网格图,从左下角出发,每堆石子拿一个看成往上走(AT_agc002_e Candy Piles
  28. 可以考虑枚举因子来计算(CF1499D The Number of Pairs
  29. 转化题目给定的条件,差分来做(CF1710B Rain
  30. dp 前可以构造一下,如(CF1930D2 Sum over all Substrings (Hard Version)),通过构造发现,对于 \(s\) 中每个 \(1\),只需要 \(i\) 的贡献,而且不需要考虑前两个,由此得到转移方程
  31. 发现从小到大取最优,就从小往大做,直接把选了的数扔进 set 里,用树状数组维护删掉后的贡献(CF387E George and Cards
  32. 对于不容易求的量,可以通过其他相关的量来转移(P4550 收集邮票
  33. 一段数 \(+1\) 等价于 其他数 \(-1\)P6544 [CEOI2014] Cake
  34. 可以拆贡献,分为 不变的 和 变化的(与位置有关),分别维护 (CF396C On Changing Tree
  35. 考虑环的情况,如 CF2045G X Aura 正环倒过来走成了负环,于是题目转化为树的情况
  36. 恰好 \(=k\) 转化为 \(\ge k\) 的方案数,前后差分,得到 恰好(CF1188C Array Beauty
  37. 直接高精度维护会超时,考虑延迟更新,只要每次 /2 的时候更改后两位就可以了(P5513 [CEOI2013] Board
  38. 树链剖分性质:dfn 连续,所以可以用 set 来维护,查询时二分(ZR 2858 苹果树
  39. 线段树上挂 vectorP4215 踩气球 & P10590 磁力块
  40. 线段树可以对应一个 \(2^n\) 长的序列(CF1401F Reverse and Swap
  41. 总和 = 期望 \(\times\) 总方案数(AT_agc030_d Inversion Sum
  42. 一个合法的括号序列的前缀和总大于等于零且本身的和为零
  43. 抽象成平面直角坐标系,从 \((0,0)\) 出发,每一个 \(1\) 看成 \((0,0)->(1,1)\)\(0\) 看成 \((0,0)->(1,-1)\)P1641
  44. 可以对每一个深度都建一颗主席树(CF893F

代码部分:

  1. vector 最好不要直接排序,常数大,可以用索引来排序。
  2. 注意算术优先级(加括号)!!
  3. 数组越界要特判,比如下标从 \(0\) 开始时 i-1 要特判一下。
  4. 图论时的输入有时从下标 \(2\) 开始读入。
  5. 二分时 \(l+r\) 若超出 long long 范围,可以用 \(mid=l+(r-l)/2\)
  6. 不要写 unordered_map,用 map
  7. string 类如果写了 s=" "+s; 之类,n=s.size() 应写在前面。
  8. st 表要调用 log 的预处理!!
  9. n<<1 不要写成 1<<n
  10. 递归不要忘写函数名
  11. 数位 dp 初始化最好为 \(-1\)
  12. 尽量不要太压行,不能想当然把一样的东西合并了,想一想有没有先后顺序(会不会又重复变量?)
  13. 不要运行错代码!!!
  14. 离散化,有些可能要开两倍甚至三倍

else:

容斥原理

\[|\bigcup_{i=1}^n S_i|=\sum_{1 \le i \le n}|S_i|−\sum_{1 \le i<j \le n}|S_i \cap S_j|+\sum_{1 \le i<j<k \le n}|S_i \cap S_j \cap S_k|- \cdots +(−1)^n |S_1 \cap S_2 \cap \cdots \cap S_n| \]

二项式反演

  • 形式一:

\[g(n)=\sum_{i=0}^n (-1)^i \binom{n}{i} f(i) \iff f(n)=\sum_{i=0}^n (-1)^i \binom{n}{i} g(i) \]

  • 形式二:

\[g(n)=\sum_{i=0}^n \binom{n}{i} f(i) \iff f(n)=\sum_{i=0}^n (-1)^{n-i} \binom{n}{i} g(i) \]

  • 形式三(至多和恰好的转化):

\[g(n)=\sum_{i=n}^N \binom{N}{i} f(i) \iff f(n)=\sum_{i=n}^N (-1)^{N-i} \binom{N}{i} g(i) \]

  • 形式四(至少和恰好的转化):

\[g(n)=\sum_{i=n}^N \binom{i}{n} f(i) \iff f(n)=\sum_{i=n}^N (-1)^{i-n} \binom{i}{n} g(i) \]

posted @ 2024-06-10 15:12  见合  阅读(48)  评论(0编辑  收藏  举报