求区间第k小值
静态
分块
排序
划分树
动态
主席树
平衡树
子树求交
树上颜色问题
统计颜色数量
对于子树\(x\),子树内同种颜色的点只有深度最浅的对子树外有贡献
#3628. 「2021 集训队互测」树上的孤独
贡献上传:对于\(x\),设它同颜色祖先为\(p\),则\(x\)对路径\(p\thicksim x\)上的点都有贡献,则将\(p\thicksim x\)的点的深度线段树上\(dep[x]\)的权值都增加\(1\)
P2664 树上游戏
点分治,利用上面的原理,开桶统计即可
题解有说\(O(n)\)的树上差分做法
细节等写了再补
极差问题
涉及极差的,往往至少要知道一个边界值(\(max/min\)),或通过排序使得最小值可维护,可以对此列出DP等
P7514 [省选联考 2021 A/B 卷] 卡牌游戏
\(a[],b[]\)扔一起排序,问题变成找一段数\([l,r]\),使得每一个\(i\),\(a[i],b[i]\)中至少有一个被\([l,r]\)
包含,双指针维护即可
Group Projects
把最小值放入DP,发现多个集合不好维护,利用差分思想,每走过一个数将当前对极差产生的贡献加入
P8290 [省选联考 2022] 填树
把最小值放入DP:\(f[i][l]\)求子树\(i\)的数在\([l,l+K]\)之间的方案数,但是对于取不到最小值\(l\)的情况会被\(f[i][l+1]\)算重,考虑加维/差分掉\([l+1,l+K]\)的方案数
P9120 [春季测试 2023] 密码锁
二分答案,对于\(k=3\)的数据点,先考虑\(max\)和\(min\)在哪一行,再检验剩下一行是否有\(D\le mid\)
状态压缩
状态枚举
利用lowbit可以快速获取所有前继的状态(100110 -> 100100)
利用for(int i=x;i;i=(i-1)&x)
可以做到\(3^n\)枚举子集
位运算
\(\textcolor{red}{*}\)位运算优先级
注意:
1、加减号优先级高于一切位运算符(mid=l+r>>1);
2、按位运算符(&、|、^)优先级低于数值判断号((x&1)==(y&1));
异或
高斯消元
01trie
二进制拆分
按位分块
分位处理
[EER2]谔运算
P6623 [省选联考 2020 A 卷] 树
分位
考虑\(x\)对祖先的贡献,分位考虑,发现第\(i\)位在祖先链上的贡献为类似\(00011110\)的形式,则产生贡献的点是一段区间
01trie
异或操作,考虑01trie
发现区间加\(1\)操作无法维护,观察发现其实就是若干个结点交换儿子位置,但是在由高位到低位的01trie上每个结点都要交换,考虑由低位到高位建立01trie,此时只有右儿子有进位,递归处理右儿子即可
子集卷积 & 子集反演
见状压dp
标签:专题,01trie,贡献,最小值,树上,联考,DP From: https://www.cnblogs.com/zhone-lb/p/18522186