バイトの競プロメモ

主に競技プログラミング

AtCoder Regular Contest 156 C - Tree and LCS

C - Tree and LCS

 

メモ

まず、単純な場合を考える

パスの上では与えられた順列を反転することで類似度を1にできることが分かる

 

同様に木の場合で考えると、ある頂点を根としたときに

その根から分けられる部分木たちSについて

そのS達の各頂点を根を中心として反転するような操作(つまり別の部分木へ移す)をしたくなる。

 

しかし実際は反転する必要はなく

iの根からの距離をdiとした時に

i, jが同じ部分木に属するなら、i, jが移された位置i2, j2について

di < dj == di2 < dj2 (bool値)

が成り立てば同様に類似度を1にできる