【学习笔记】少许小技巧
求三点LCA
inline int LCA_OF_THREE(int x,int y,int z){
return lca(x,y)^lca(x,z)^lca(y,z);
}
//求三点LCA
O(集合大小)枚举子集
for(register int s=S;;s=(s-1)&S){
if(!s) break;
//计算计算计算……
}
- 正确性:不断减小保证不重不漏,与操做保证没有额外的元素被枚举
inline int LCA_OF_THREE(int x,int y,int z){
return lca(x,y)^lca(x,z)^lca(y,z);
}
//求三点LCA
for(register int s=S;;s=(s-1)&S){
if(!s) break;
//计算计算计算……
}