zoukankan      html  css  js  c++  java
  • 模板

    需要注意:

      strlen() 时间很快然而不是o(1),不要偷懒!

      树状数组要判0

      n=100000 质数个数9592 u[i]!=0个数60794  每个数的u[i]非0个数 778581   约数个数1166750

      n=1000000 质数个数78498 u[i]!=0个数607926 每个数的u[i]非0个数:9185685  约数个数13970034

      数据要保证全部读进来,不要中途break或者return

    模板,bitset,sap,zkw,fft,ntt,点分支,斯坦纳树

    二分图概念整理 

    tarjan

    双联通

    void tarjan(int x)
    {
        dfn[x]=low[x]=++tsum;
        int son=0;
        repedge(i,x) {
            if (use[i]) continue;
            use[i]=use[i^1]=1;
            int too=e[i].t;
            if (!dfn[too]) {
                tarjan(too);
                low[x]=min(low[x],low[too]);
                if (dfn[x]<low[too]) {
                    ans++;
                    cur[i]=cur[i^1]=1;
                }
            }
            else
                low[x]=min(low[x],dfn[too]);
        }
    }

    强连通

    void tarjan(int x)
    {
        dfn[x]=low[x]=++tsum;
        vis[x]=1;
        pp.push(x);
        repedge(i,x) {
            int too=e[i].t;
            if (!dfn[too]) {
                tarjan(too);
                low[x]=low[too]<low[x]?low[too]:low[x];
            }
            else
                if (vis[too] && dfn[too]<low[x]) low[x]=dfn[too];
        }
        if (low[x]==dfn[x]) {
            ++tot;
            numi[tot]=numo[tot]=0;
            int j;
            do {
                j=pp.top();pp.pop();
                vis[j]=0;
                scc[j]=tot;
            }while (j!=x);
        }
    }
    View Code

     dfn也可以作为深度的标志,进行lca时的次序判断

    二分图模型

    p.s  n==1注意 二分图判断用for+bfs

    黑白染色:1*2棋盘型,树结构。

    【无向图的最大独立数】: 从V个顶点中选出k个顶,使得这k个顶互不相邻。 那么最大的k就是这个图的最大独立数。
    【无向图的最大团】: 从V个顶点选出k个顶,使得这k个顶构成一个完全图,即该子图任意两个顶都有直接的边。
    【最小路径覆盖(原图不一定是二分图,但必须是有向图,拆点构造二分图)】:在图中找一些路径,使之覆盖了图中的所有顶点,且任何一个顶点有且只有一条路径与之关联。最小路径覆盖 = |V| - 最大匹配数
    【最小边覆盖(原图是二分图)】:在图中找一些边,使之覆盖了图中所有顶点,且任何一个顶点有且只有一条边与之关联。最小边覆盖 = 最大独立集 = |V| - 最大匹配数
    【最小顶点覆盖】:用最少的点(左右两边集合的点)让每条边都至少和其中一个点关联。

     白书中的输出方案

  • 相关阅读:
    12 个最佳 GNOME(GTK)主题
    Ubuntu18.04解决鼠标移动到Gnome顶栏左上角窗口不能平铺( Activites Overview 界面),和应用程序扩展不好用问题。
    常用的GNOME Shell 扩展
    11 个使用 GNOME 3 桌面环境的理由
    值得尝试的十款 GNOME Shell 扩展
    Python快速教程 尾声(转)
    宽恕
    EF code First数据迁移学习笔记(转)
    异步编程 In .NET(转)
    bootstrap + requireJS+ director+ knockout + web API = 一个时髦的单页程序
  • 原文地址:https://www.cnblogs.com/Macaulish/p/7404197.html
Copyright © 2011-2022 走看看