simple tricks

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

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

  3. 01(2m1)=00 \oplus 1 \oplus \cdots \oplus (2^m-1)=0

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

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

  6. 对于一个环,环外一个点 ssvpv\in ppp 为关键点即可)连边跑最短路求 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=ni=1mbi\prod\limits_{i=1}^{m}b_i 最大。

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

    f(n)={1n=13n/3n0(mod3)3(n4)/34n1(mod3) andn43(n2)/32n2(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<kixorkmin(ixorj,jxork)i\operatorname{ xor }k\ge\min(i\operatorname{ xor }j,j\operatorname{ xor }k)

  10. ixorjiji\operatorname{ xor }j\ge|i-j|

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

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

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

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