• 树剖求lca
  • 第二类Stirling数
  • 倍增+floyd 跑路【G[i][j][logn] 和 dis[i][j]的巧妙定义】
  • spfa 负环 多组要建图的数据记得mem(head,0),记得初始化cnt[s]=1;,cnt[v]>n而不是>=(容斥原理)
  • 欧拉图 考虑:1.连通 2.欧拉图的判定
  • st表
  • 会议座位 以第一个序列作为基准,用数组x映射一下b在a的位置,那么总不满值就是新的编号的b的逆序对个数

st 表

rep(i,1,n)rd(f[i][0]);
    rep(j,0,20)
        for(int i=1;i+(1<<j)-1<=n;++i)
            f[i][j+1]=max(f[i][j],f[i+(1<<j)][j]);
    while(m--){
        int l,r;rd(l),rd(r);
        int len=log2(r-l+1);
        printf("%d\n",max(f[l][len],f[r-(1<<len)+1][len]));
    }

欧拉图

*如果图中奇数度的顶点个数小于等于2,则一定存在欧拉回路

*在无向图中每个顶点的度都是偶数,则一定存在回路

*在有向图中,每个节点的入度等于出度,则存在回路

使用并查集维护经过点的个数
设hebing为成功合并的次数,n为点数
则整张图含欧拉路当且仅当hebing>=n-1且奇度数点为0或2
//tot:出现的点的个数(把一种颜色看做一个点)
//hebing记录成功合并的次数

【第二类Stirling数】P1287 盒子与球

表示n个球放入r个不同的盒子的方法。

02-14 01:14