常用小技巧
-
定义对于一个区间 \([l,r]\) 中不存在 \(l \leq l' \leq r' \leq r\) 满足 \(mex(l,r) = mex(l',r')\) ,则称这个区间为“好的区间” 。好的区间只有 \(O(n)\) 个。
证明:不妨设 \(a_l > a_r\) ,显然有 \(a_l < mex(l,r)\) ,假设对于以 \(l\) 为左端点存在另一个好的区间 \([l,r']\) 满足 \(r' > r\) 且 \(a_l > a_{r'}\) ,则 \(a_{r'} < a_l < mex(l,r)\) ,说明 \(a_{r'}\) 一定已经在 \([l,r]\) 中出现过了,一定不会产生有效贡献,因此 \([l,r']\) 不可能是一个“好的区间”
而对于 \(a_l < a_r\) 的情况同理,只需固定右端点即可 -
把一个完全二叉树划分成若干个满二叉树最多只有 \(O(\log n)\)
珂棵 -
判断一个二叉树为满二叉树:根一直往左走的深度和一直往右走的深度距离是否相同
-
分块把大块按照第一维度排序,小块按照第二维度排序,可以在线处理二维偏序问题
-
在遇到要求前 \(k\) 大但 \(k\) 很小的情况时,一种好些的做法时直接用 set 维护,例题:P8817 [CSP-S 2022] 假期计划
-
强连通的竞赛图始终有哈密顿回路,而且不少(意思是可以直接暴力求,复杂度不会太高)