10月には、タイトルの記録を行います。

私は、件名を望んでいません。問題を整理するために数分かかる記録していますか?問題のメソッドを実行する方法について胡口。

  • CF52C円形RMQ

セグメントツリーはチェックマークRMQを築きます。

  • P1840色Axis_NOIガイド2011増加(05)

黒い点は、0リットル〜R変性割り当てられ
、各時間間隔でセグメントツリーをし、クエリ仕上げを変更します

  • CF1234 A〜F Fのゲーム差5minACタイトル...(言わないDIV3されているので...)

  • P1640 [SCOI2010]連続攻撃ゲーム

両方の属性が与えられ\(A \) \(B \)が最長の連続したシーケンスの構築をお願い
厳しい満たすために貪欲な表情を\(\の当量bは\)による\(\)をファック、その後整理します。
複雑\(N \ログのn \)

  • P2071の座席配置

誰もが行数、各座席2人を撮りたかったです。
二つの点に分割各行。
みんなでソースネットワーク流れ、その後も、人々の側面とは、二つの側面から排出される各解体の両側最後の点を接続しても、シンク
を実行\を(dinic \)出てきました。

  • P3979遠い国

ツリーの他の断面ルートにおける
第2の動作鎖振動子3動作サブツリーのルート変更要求RMQの動作に。
議論ルート分類のために検討因为链是树中唯一的ルートの独立位置は、オペレータの同じ鎖でない分類は、2つの論じていない
第3の動作位置をルートと考えられる(断面積を変化させるツリーのルートの魂?..)

inline int getfa(int x , int k) {
    for(register int i = 20 ; i >= 0 ; i --)
        if(k >= (1 << i)) k ^= (1 << i) , x = fa[x][i] ;
    return x ;
}
int root = 1 ;
inline void getans(int x) {
    if(x == root) {
        printf("%lld\n" , mn[1]) ;
        return ;
    }
    int y = 0 ;
    int p , q ;
    if(d[x] < d[root] && fa[y = getfa(root , d[root] - d[x] - 1)][0] == x) {
        p = Query(1 , id[y] - 1 , 1 , n , 1) ;
        if(id[y] + size[y] <= n) q = Query(id[y] + size[y] , n , 1 , n , 1) ;
        else q = INT_MAX ;
        printf("%lld\n" , min(p , q)) ;
    }
    else printf("%lld\n" , Query(id[x] , id[x] + size[x] - 1 , 1 , n , 1)) ;
}

デフォルトのルートが開始され、DFS1は、彼のルーツを変更し、比較がうまくなるようにします。
複雑\(n個の\ログ^ 2のn \)

  • P1963変換の[NOI2009]配列

質問は、辞書編集最小シーケンス番号を求める二つの数に拡張することができ、直接二部グラフマッチングを考慮することを意図しています。
建設の値によって、2つの数字が小さい側を入れて(前方星がかかとの上に頭..です)、その後、辞書を使い果たした後、確実に最小の順です。

  • P1758 [NOI2009]パイプは、ビーズを取ります

探している\(\ sum_ {I} = ^ {TOT。1} {2} cnt_i ^ \) \(TOT \)は、文字列の総数が構成することが可能です。\(CNTは\)文字列の出現回数で
来る遷移方程式は、

int len = i + j - k ;
if(a[i + 1] == a[k + 1]) f[(i & 1) ^ 1][j][k + 1] = (f[(i & 1) ^ 1][j][k + 1] + f[i & 1][j][k]) % Mod ;
if(a[i + 1] == b[len + 1]) f[(i & 1) ^ 1][j][k] = (f[(i & 1) ^ 1][j][k] + f[i & 1][j][k]) % Mod ;
if(b[j + 1] == a[k + 1]) f[i & 1][j + 1][k + 1] = (f[i & 1][j + 1][k + 1] + f[i & 1][j][k]) % Mod ;
if(b[j + 1] == b[len + 1]) f[i & 1][j + 1][k] = (f[i & 1][j + 1][k] + f[i & 1][j][k]) % Mod ;

スクロールビットメモリアレイの最適化\(N ^ 2 \)時間\(N ^ 3 \)

  • P4130 [NOI2007]ネックレスファクトリー

もっと聞いオペレーティング\(ODT \)速く走るように見えますか?とにかく、問題は比較的早いです。この位置についての手の投影によって保守区間ツリーに問題が自分自身
と、色と回数の合計数の色の構造とそれを周りに保つ-それは考えるためにもう少しのリングであるので、最後。

inline void Make(int & x , int & y) {
    if(! rev) {
        if(x >= tr + 1) x -= tr ;
        else x = n - tr + x ;
        if(y >= tr + 1) y -= tr ;
        else y = n - tr + y ;
    }
    else {
        if(x <= tr + 1) x = tr - x + 2 ;
        else x = tr + n - x + 2 ;
        if(y <= tr + 1) y = tr - y + 2 ;
        else y = tr + n - y + 2 ;
    } return ;
}

複雑\(N \ログのn \)

  • P2264ラブレター

文字列のシミュレーションの質問?言わないでください

  • P3690 [テンプレート]リンクカットツリー(ダイナミック木)

LCTボード(とにかくバックプレーンの娘が逃げます

  • P2147 [SDOI2008]洞窟の測量

LCTボードに直接エッジオフ、質問にもエッジ。次に\(FindRootでの\)は、通信回線か否かを判定する。

  • P2173 [ZJOI2012]ネットワーク

暴力のアイデアは、20 LCTを建てました。
3つの操作
ノードの重みを変更するには、
直接エンド変更\(スプレイ\)をビンについて
の片側の色変更
、元の場所にこれらのエッジを\(カット\)別のLCTのオフ\(リンク\)起こったことに関して、ハンは現れない(MAP \)\不十分保存することが
ノードvの重み内のノード間の単純なパスに、エッジの色cからなるすべての可能なノードuと最大直接クエリ図を\(スプリット\)それを見つける\(RMQ \)問題を。

  • P4867 Gty二つの配列力の姉妹

私は、データが癌であると思いますか?その後、私はそれを試してみました
直接のMoチームプラスフェンウィックツリー水が通過しました。

それは使用することです\(CNTの\)統計が拠出を減算するための時間1 0の増加に寄与するよう出現の倍の数を。

P4271 [USACO18FEB]新バーンズ

おそらく、質問の意味は、最大距離の通信ブロック内の他のポイントには、2つの通信ブロック、クエリ点をマージすることで
バックハンドを書く直接LCT。ダイナミックなメンテナンス手。

おすすめ

転載: www.cnblogs.com/Isaunoya/p/11764199.html