BuringStraw

BuringStraw

木の上の差分

ツリー上の差分#

説明#

差分配列(前方和ではない)をツリー上に置き、特定のノードの重みがそのノード自身とすべての子ノードの差分の合計に等しくなるようにします。(意味不明)

差分配列の役割は、区間の変更の時間計算量を低くすることであり、ツリーに適用すると、このような状況に応じて使用できます:

ツリー

点の差分#

A—B の単純なパス上のすべてのノードの重みを 1 増加させます。

このパスを A から L(A と B の LCA)および B から L の 2 つのチェーンに分解できます。

A と B のマークを 1 増加させると、A から L および B から L に対応する値が統計時に 1 ずつ増加し、L の値は合計で 2 増加するため、L のマークを 1 減少させます。L の親ノードは、差分配列の区間を変更する際のその区間の後の点のように、そのマークを 1 減少させます。

辺の差分#

辺の重みを下の点に変換します。

したがって、今回 L 点のマークは動かせず、区間が 1 増加するたびに L 点のマークは 2 減少させる必要があります。

ボード問題#

洛谷 P3128 最大流 Max Flow

読み込み中...
文章は、創作者によって署名され、ブロックチェーンに安全に保存されています。