DP&グラフ理論DAY午後5時

DP&グラフ理論DAY午後5時

 

ツリーチェーン分割 

 

 

 

重鎖または軽に属する各エッジまたはエッジ

 

 

   証明:  https://www.cnblogs.com/sagitta/p/5660749.html

 光側が交互に重鎖を取っている(ここで、重鎖は、エッジの数を取ることができます)

 

1.dfs1統計サブツリーのサイズは、息子の重量を決定します

重鎖、重鎖、サブツリー、それぞれ、連続したストレッチを見つける2.dfs2

 

重鎖に属する各ノード

 

 

 

           <TBへ

          親ノードTAへジャンプ

          LOGNレベル

 

 

 

 ツリーのシリアライズ

 

 

 

 木の上SPOJ Qtreeのクエリ

 

溶液

チェーン分割ツリー+ セグメントツリーメンテナンス間隔最大値

チェーンスプリットポイントTandaoの右側にあるBFS木

 

 

 

 BZOJ 1036 ツリーの統計

 

溶液

 

 

 

 BZOJ 4034

 点数があるN個のツリーは、ポイント1がルート、およびツリーを指すように右です。そこであるMの
三種類に分け操作は、:
1 ノードにX 点権が増加しました2. ノード置くXが増加しているすべての点で右点をルートとするサブツリーを3. ノード求めXの正しい道のルートへと全ての点でポイントを。


溶液

プラスシングルポイント

間隔の変更

インターバル・お問い合わせ

 

 

 

BZOJ 2243 染色

 

溶液

             同时维护区间左右端点颜色

 

             若相同,左右颜色段数相加-1

             不相同,直接加起来

 

 

 

 

 

 

 

 BZOJ 2238 MST

 

Solution

 1.对于m-n+1条非最小生成树上的边,不会对原来的最小生成树产生影响,直接出结果

 2.对于最小生成树上的边,用别的来替代

 

 

 

 

 

 强连通分量      

 

缩点

 

Tarjan 算法

// Tarjan

void tarjan(int u) {
    dfn[u] = low[u] = ++tim; stk[++top] = u;
    for (int i = hd[u], v; i; i = nt[i])
        if (v = to[i], !scc[v]) {
            if (!dfn[v])tarjan(v),
                low[u] = min(low[u], low[v]);
            else
                low[u] = min(low[u], dfn[v]);
        }
    if (dfn[u] == low[u]) {
        ++cnt;
        do {
            scc[stk[top]] = cnt;
        } while (stk[top--] != u);
    }
}

 

 

 

BZOJ 2208 连通数

14:  1-2 , 1-3 , 1-4 , 1-5 , 2-3 , 2-5 , 2-4 , 3-5 , 3-4

          再加上自己到自己的五对

Solution

 
 

 bitset

bitset<100000>a;长度为1e5的二进制数

可以数组O(1)查询,赋值

支持位运算

 a.count( ) 统计 a 里面有多少位为 1 

 

 

 POJ 2186 Popular Cows

 

 

 

 POJ 1236 Network of Schools

 

 Solution

 

 

おすすめ

転載: www.cnblogs.com/xiaoyezi-wink/p/11331260.html