-
一个区间的斜率最大值一定是相邻两者的斜率最大值。
-
询问一个序列所有子段的最大值之和,可转换为一个数是多少子段的最大值,单调栈 O ( n ) \mathcal O(n) O(n) 维护。
-
0 ⊕ 1 ⊕ ⋯ ⊕ ( 2 m − 1 ) = 0 0 \oplus 1 \oplus \cdots \oplus (2^m-1)=0 0⊕1⊕⋯⊕(2m−1)=0。
-
显然的操作
dp
缺少observation
时,可尝试寻找操作之间的同余关系。 -
若每个点的出入度都是偶数,则每个点的总度数是偶数,是一张图存在欧拉回路的充要条件。
-
对于一个环,环外一个点 s s s 向 v ∈ p v\in p v∈p( p p p 为关键点即可)连边跑最短路求 s s s 到非关键点的最大 d i s dis dis。可枚举环上关键点的前一个点(肯定最优),判断即可。
-
对于一些点向下递归染色(每次只染一层)的树剖题,可转换为判断每个点是否被染到的模型(使得点到根节点路径上权值的最大前缀和为 − 1 -1 −1),通常设点权 − 1 -1 −1,判前/后缀是否 ≤ 0 \leq 0 ≤0,消除影响就是设为原点权 − - − (最大前缀和 + 1 +1 +1),子树设 − 1 -1 −1。
-
给定正整数 n n n,要你构造出正整数序列 b [ 1 , m ] b[1,m] b[1,m],使得 ∑ i = 1 m b i = n \sum\limits_{i=1}^{m}b_i=n i=1∑mbi=n 且 ∏ i = 1 m b i \prod\limits_{i=1}^{m}b_i i=1∏mbi 最大。
结论:设 f ( n ) f(n) f(n) 表示答案,则有:
f ( n ) = { 1 n = 1 3 n / 3 n ≡ 0 ( m o d 3 ) 3 ( n − 4 ) / 3 ⋅ 4 n ≡ 1 ( m o d 3 ) and n ≥ 4 3 ( n − 2 ) / 3 ⋅ 2 n ≡ 2 ( m o d 3 ) 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} f(n)=⎩⎪⎪⎪⎨⎪⎪⎪⎧13n/33(n−4)/3⋅43(n−2)/3⋅2n=1n≡0(mod3)n≡1(mod3) andn≥4n≡2(mod3) -
一个上升区间两数异或最小值一定是相邻两者的异或最小值, ∀ i < j < k \forall i<j<k ∀i<j<k, i xor k ≥ min ( i xor j , j xor k ) i\operatorname{ xor }k\ge\min(i\operatorname{ xor }j,j\operatorname{ xor }k) ixork≥min(ixorj,jxork)。
-
i xor j ≥ ∣ i − j ∣ i\operatorname{ xor }j\ge|i-j| ixorj≥∣i−j∣。
-
判断一个数是否为序列中位数,可以将小于该数的数置为 − 1 -1 −1,大于等于该数的数置为 1 1 1。求全局和,若 < 0 < 0 <0 ,该数大于等于中位数,否则小于等于中位数,二分。
-
( a b ) m o d 2 ≠ 0 \dbinom{a}{b} \bmod 2 \ne 0 (ba)mod2=0,意味着 b b b 是 a a a 的子集,
Lucas
定理推到即可,一般套上状压DP
。 -
一个数能整除起数位上非零的数字,等价于这个数 m o d 2520 \bmod 2520 mod2520 可以整除其非零数字的最小公倍数。
simple tricks
于 2022-05-11 18:30:51 首次发布
博客探讨了算法问题,包括序列子段最大值的计算,利用单调栈达到O(n)的时间复杂度;数的异或性质,如区间斜率最大值和异或最小值的特性;数论中的同余关系和欧拉回路的充要条件;以及构造序列最大化积的问题,给出了与模3的关系。还涉及到了染色树剖和最短路算法的应用。
摘要由CSDN通过智能技术生成