simple tricks

  1. 一个区间的斜率最大值一定是相邻两者的斜率最大值。

  2. 询问一个序列所有子段的最大值之和,可转换为一个数是多少子段的最大值,单调栈 O(n)\mathcal O(n) 维护。

  3. 0⊕1⊕⋯⊕(2m−1)=00 \oplus 1 \oplus \cdots \oplus (2^m-1)=0。

  4. 显然的操作 dp 缺少 observation 时,可尝试寻找操作之间的同余关系。

  5. 若每个点的出入度都是偶数,则每个点的总度数是偶数,是一张图存在欧拉回路的充要条件。

  6. 对于一个环,环外一个点 ss 向 v∈pv\in p(pp 为关键点即可)连边跑最短路求 ss 到非关键点的最大 disdis。可枚举环上关键点的前一个点(肯定最优),判断即可。

  7. 对于一些点向下递归染色(每次只染一层)的树剖题,可转换为判断每个点是否被染到的模型(使得点到根节点路径上权值的最大前缀和为 −1-1),通常设点权 −1-1,判前/后缀是否 ≤0\leq 0,消除影响就是设为原点权 −- (最大前缀和 +1+1),子树设 −1-1。

  8. 给定正整数 nn,要你构造出正整数序列 b[1,m]b[1,m],使得 ∑i=1mbi=n\sum\limits_{i=1}^{m}b_i=n 且 ∏i=1mbi\prod\limits_{i=1}^{m}b_i 最大。

    结论:设 f(n)f(n) 表示答案,则有:

    f(n)={1n=13n/3n≡0(mod3)3(n−4)/3⋅4n≡1(mod3) and⁡n≥43(n−2)/3⋅2n≡2(mod3)f(n)=\begin{cases}1&n=1\\3^{n/3} & n \equiv 0 \pmod 3\\3^{(n-4)/3}\cdot 4 & n\equiv 1\pmod 3 \ \operatorname{and} n \ge 4 \\3^{(n-2)/3} \cdot 2 &n\equiv 2 \pmod 3\end{cases}
  9. 一个上升区间两数异或最小值一定是相邻两者的异或最小值,∀i<j<k\forall i<j<k,ixor⁡k≥min⁡(ixor⁡j,jxor⁡k)i\operatorname{ xor }k\ge\min(i\operatorname{ xor }j,j\operatorname{ xor }k)。

  10. ixor⁡j≥∣i−j∣i\operatorname{ xor }j\ge|i-j|。

  11. 判断一个数是否为序列中位数,可以将小于该数的数置为 −1-1,大于等于该数的数置为 11。求全局和,若 <0< 0 ,该数大于等于中位数,否则小于等于中位数,二分。

  12. (ab) mod 2≠0\dbinom{a}{b} \bmod 2 \ne 0,意味着 bb 是 aa 的子集,Lucas 定理推到即可,一般套上状压 DP。

  13. 一个数能整除起数位上非零的数字,等价于这个数  mod 2520\bmod 2520 可以整除其非零数字的最小公倍数。

posted @ 2022-05-11 14:07  蒟蒻orz  阅读(41)  评论(0)    收藏  举报  来源