CF競賽題目講解_CF791D(樹形DP)
2022-06-23 15:01 作者:Clayton_Zhou | 我要投稿
// https://codeforces.com/contest/791/problem/D
// 樹形DP
// 如果小熊每次能跳躍的距離為1,那么問題變?yōu)榍髽渖先我鈨牲c之間距離之和。
//? ?f[u][j]:? u子樹中根節(jié)點1的距離為j=dep(模k)的節(jié)點個數(shù)
// 樹上任意兩點間距離len=depth[x1]+depth[y1]-2*depth[f],f表示點x1和點y1的最近公共祖先。
? //len = j + r - dep * 2? 為節(jié)點j到節(jié)點r的路徑長度,? 節(jié)點j到根節(jié)點1的距離為j=dep(模k);
? // 如果len不是k的倍數(shù),則加上? ? ? ?rev =( 2*k + dep * 2 -j-r) % k;? 到總跳躍距離ans
// 總跳躍次數(shù)為: 總跳躍距離ans/k
// 4 3
// 1 2
// 1 3
// 2 4
//
//?
標簽: