1.木のカバーの木
(1)フェンウィックツリーカバーフェンウィックツリー
フロント:
どのようにフェンウィックツリーのサポートに加え、範囲と範囲のクエリ
値の位置を見つけるために、差分配列を維持し、私たちは前に付ける必要があると長方形と見られ、
マイナス2つの数の寄与は補間することによって生成することができます
1.P4514神は7分のタイトルを作りました
質問の意味:サポートプラス長方形と長方形のクエリ値の数。
私たちがしたいときに、各点の差を考えてみましょう((a、b)は、\ (x、y)は\) 実際には、マトリックスプラス1時00分の範囲を:
\(A(B)+1 \)
\((X、B + 1)-1 \)
\((Y + 1)-1 \)
\((X + 1、Y + 1)+1 \)
それ以来、プレフィックスと:
\ [\ sum_ {I = A} ^ X \ sum_ {J = B} ^のyA(I、J)*(X-I + 1)*(Y-J + 1)\]
\ [\ sum_ {I = A} ^ X \ sum_ {J = B} ^のyA(I、J)*(Xの*のY + 1)+(I、J)* i *がJA(I、J)*私は(Y + 1)-A(i、j)は* J×(X + 1)\ *
维护\((i、j)は* iのjは*、A(i、j)は* I、A(i、j)は* jを、A(i、j)は\)即可
(2)重量部のスリーブセグメントツリーセグメントツリー
1.P3332 [ZJOI2013] Kタルスス問い合わせ
質問の意味:
1 ABC:Bは、第1の位置で第一の位置、各位置プラス数cを表します
2 ABC:第二の位置Bへの最初の位置からクエリを表し、多数Cの数であります
直接に。。。
(3)。フェンウィックツリーセット議長ツリー
私たちは、単一のツリーは、接頭辞と単一の私達の会長に似ていることがわかりました。我々は修復するポイントが必要な場合
変更、および評価は、私たちは、毎年秋に倍の数に変更、フェンウィックツリーのメンテナンス間隔との関係を考えます
\(O(ログイン^ 2N)\)が、クエリは、このような複雑になってきたたびに。
1.P2617ダイナミックランキング裸题
2.ダイナミック逆順
3.P4175 [CTSC2008]ネットワーク管理
質問の意味:ツリー内のチェーンのメンテナンスk番目の最大値、および変更をサポートしています。
解決法:直接木のカバーツリーと、ツリーのセクション、優れたセット\(O(nlog ^ 3N)を \)
(4)バランスのとれたツリーセグメントツリーのセット
1.P3380 [テンプレート2つの強制平衡ツリー(木カバー木)
巨大な巨人は、私は自分自身を作る場合に、実際には、何も言わなかった\(YY \)のうち、\(O(^ 3Nをログ) \) アプローチ、
しかし、こんにゃくはつまり、前ではなく、大規模な定数が付属しています。
2.ポイントの分割統治
ツリーの高さを維持し、重心の右側を求めるたびに、合計複雑であること点線規則の複雑
\(O(nlog N)\ ) の
1.P3806 [テンプレート]パーティション1点
ソリューション:ロールラフボード
2.P4149 [IOI2011]レース
ソリューション:マルチ側の数を維持します
3.P2634 [ナショナルチーム]コングコングココア
ソリューション:ロールラフボード
3.ダイナミック点線のルール
分割統治の動的な点は、それへの変更をサポートすることです。。。。。。
その後、我々はそうこれに基づいて、我々は、点線を構築することができ、点線のルールは常に重心を見つけることである必要があります知っています
ツリー、非常に良いです。そして、我々は実際には分割統治のすべての点は、各回答の重心の総和以上のものではないことを知っています。私
重心のそれぞれへの答えは直接記録されています。サブツリーの複雑さの点から構築まだ非常に安全です。
分割統治は非常にダイナミックなポイントは、啓示を与えて、まだあります。
1.P3345 [ZJOI2015]郷ファンタジー戦略ゲーム
質問の意味:木、右のポイントに、右側があります。、ポイントを変更する権利をサポートして、ポイントを識別するために、すべてのポイントを尋ねました
*重量と、この時点までの最短距離。
ソリューション:
1.この質問の美しい自然は、重力の木の中心部を見つけることです。
2.重心への直接この質問はVに行き、その後sumd_v> sumd_u $ $ 2 \回を満たすためにした場合。
3.私たちは、すべての統計は、この時点から*重みで注目したいです。点線ツリーが行うことができます。それは次のようになります。
ll count(int x){
ll res = 0 ;
res += sumval[x] ;
for(int i = x ; Hfa[i] ; i = Hfa[i] ){
ll fr = Distance( x , Hfa[i] ) ;
res += ( sumval[Hfa[i]] - sumf[i] ) ;
res += 1ll * ( sumg[Hfa[i]] - sumg[i] ) * fr ;
}
return res ;
}
ll query(int x){
ll tmp = count( x ) ;
for(int i = Fire[x] ; i ; i = Nex[i] ){
int v = To[i] ;
if( count( v ) < tmp ) return query( near[i] ) ;
}
return tmp ;
}
2.P3241 [HNOI2015]ショップ
この質問は、実際には上記のルーチンと同じである、波、ベクトル記録波を構築するために木を点在。
3.P3676小さな新鮮なデータ構造その
神は問題です。
我々\(S_I \)は表し\(私は\)サブツリーのを
ここでは、わかります(\ sum_ {i = 1から\ } ^ nS_i ^ 2 \) 非常に良い取引であり、非常に美しい自然がものではありません
私たちは、のは、インパクトの種類を生成するために戻ってルート変更を見てみましょう、最初の改正を検討していません。
ツリーは、このされている場合。今で(5 \)\ドットがルートである、と今するつもり(1 \)を\ルートドット
それだけパスことが判明\(1-5 \)サブツリーの大きさがポイントとなります。だから、美しく、恐ろしい結び目を見つけることができます
理論:
\ [\ sum_ {i = 1} ^ nS_i(SUM-S_I)\]
それは一定です。この設定は、設定されている\(Wです\)
答えは
\ [ANS =合計の\ sum_ {i = 1} ^ nS_i-W \]
但し
\ [\ sum_ {i = 1} ^ nS_i = \ sum_ {i = 1} dep_ivali \]
点線のツリーは、直接修飾することができます
我々は、単一の点を変更することを検討し始めました。
任意の2点について、その製品の寄与は、彼らがちょうど同じサブツリーに分類されていないため、両方の生産しました。
そこにこのような状況\(DIS(i、j)は \) 回
そう
\ [\ sum_ {i = 1} ^ nS_i(SUMのa-Si)= \ sum_ {i = 1} ^ n個の\ sum_ {J = 1} ^ NDIS(i、j)はval_ival_j \]
シングルポイントの変更のために:
\ [W_ {新規} =追加* \ sum_ {J = 1} ^ NDIS(I、J)* val_j \]
これは、その後、可能点線の木であります
上記と同様の文言
P2056 [ZJOI2007]かくれんぼを4かくれんぼ
私は、ヒープを使用することですあなたが学ぶことができ、ハードコードは言いませんでした
struct node{
priority_queue<int> A , B ;
void insert(int x){
A.push(x) ;
}
void dele(int x){
if( A.top() == x ) A.pop() ;
else B.push(x) ;
}
int Top(){
while( !A.empty() && !B.empty() && A.top() == B.top() ) A.pop() , B.pop() ;
if( A.empty() ) return -inf ;
else return A.top() ;
}
int nex_top(){
int rt = Top() ;
if( rt == -inf ) return -inf ;
A.pop() ; int nexrt = Top() ;
A.push( rt ) ;
return nexrt ;
}
}ans , tofa[N] , stree[N] ;
4.LCT
(1)チェーン情報:
1.P1501 [ナショナルチーム]ツリーII
2.P2147 [SDOI2008]洞窟の調査
3.P3690 [テンプレート]リンクカット・ツリー(動的ツリー)
4.P4332 [SHOI2014]三叉神経ツリー
被神仙叫做模板题。每棵平衡树在其中维护最深不是2的以及最深不是1的点。然
后乱搞就行。
(2)维护图连通性:
1.P2387 [NOI2014]魔法森林
排个序,维护一波。
2.P2542 [AHOI2005]航线规划
维护双连通,倒叙做
3.P4234 最小差值生成树
这里的话需要先新建节点,表示两点之间的边权。维护链的最小值,删掉就行。
4.P4172 [WC2006]水管局长
不知道为什么别人一个个跑得飞快。这道题,也就是维护一个最大边,形成一个
圈就删去即可。
(3)维护子树信息:
1.P4219 [BJOI2014]大融合
注意虚子树修改在\(link\)和\(access\)中要进行。
2.P3703 [SDOI2017]树点涂色
在浑浊的\(LCT\)中,这简直就是一股清流。
线段树\(dfs\)序来维护一棵子树的颜色总和。
每次将根到某个点的链全部染成同一种颜色就是一次\(access\)操作。于是乎
\(access\)每断一次边下面的原来链的子树答案加1,新加入的链的子树答案全部减
1
5.树链剖分
这是一个收集篇,收集树剖好题。
1.P4211 [LNOI2014]LCA
建个下标为标号的主席树的dfs序(维护区间差分个数)
6.扫描线
1.P1972 [SDOI2009]HH的项链
感受一下
2.P4113 [HEOI2012]采花
感受一下
3.P1856 [USACO5.5]矩形周长Picture
luogu无矩形面积并,不过这个也差不多。
跑两边扫描线,每次加差值就行。