FTOUR2 問題概要 
 N頂点の木構造が与えられる. 
 辺には重みがついており負もあり得る. 
 M個の頂点は”混雑”している. 
 2頂点間の経路であって, 混雑した頂点をK回より多く通 
らないようにしたときの通る辺の重みの最大値を求め 
よ。 
 制約: 
 1 <= N <= 200000, 
 0 <= M <= N, 0 <= K <= M.
FTOUR 入出力例のグラフ 
 N = 8, K = 2, M = 3 
1 10 
1 3 
2 
7 
5 
6 
4 8 
-2 
-1 
6 
5 
3
FTOUR2 解法 
 Step 1. 木を重心分解(Separator Decomposition, Cen-troid 
Decomposition)する 
 Step 2. 各重心sを根とした木について, 次のように場合 
分けを考えてコストの最大値をとればよい. 
1. sを始点とした経路 
2. sを通る異なる部分木の頂点間の経路 
 ※2の処理の際に間違えて同一の部分木内に含まれる頂点 
間の経路を含めないようにする.(重心分解の一般的な注 
意事項)
FTOUR2 解法 
 Step 2では重心分解によって分かれた深さlog Nの各層で 
O(K)で処理できる.他にも怪しい方法でO(K * c), Seg-ment 
Treeを用いてO(N log K)で処理できる.(ただし 
TLE?) 
 よって全体の計算量はO(N log N)

FTOUR2

  • 1.
    FTOUR2 問題概要 N頂点の木構造が与えられる.  辺には重みがついており負もあり得る.  M個の頂点は”混雑”している.  2頂点間の経路であって, 混雑した頂点をK回より多く通 らないようにしたときの通る辺の重みの最大値を求め よ。  制約:  1 <= N <= 200000,  0 <= M <= N, 0 <= K <= M.
  • 2.
    FTOUR 入出力例のグラフ  N= 8, K = 2, M = 3 1 10 1 3 2 7 5 6 4 8 -2 -1 6 5 3
  • 3.
    FTOUR2 解法 Step 1. 木を重心分解(Separator Decomposition, Cen-troid Decomposition)する  Step 2. 各重心sを根とした木について, 次のように場合 分けを考えてコストの最大値をとればよい. 1. sを始点とした経路 2. sを通る異なる部分木の頂点間の経路  ※2の処理の際に間違えて同一の部分木内に含まれる頂点 間の経路を含めないようにする.(重心分解の一般的な注 意事項)
  • 4.
    FTOUR2 解法 Step 2では重心分解によって分かれた深さlog Nの各層で O(K)で処理できる.他にも怪しい方法でO(K * c), Seg-ment Treeを用いてO(N log K)で処理できる.(ただし TLE?)  よって全体の計算量はO(N log N)