欢迎光临散文网 会员登陆 & 注册

CF竞赛题目讲解_CF791D(树上启发式合并)

2022-06-24 15:07 作者:Clayton_Zhou  | 我要投稿

// https://codeforces.com/contest/791/problem/D

// 树上启发式合并

// 如果小熊每次能跳跃的距离为1,那么问题变为求树上任意两点之间距离之和。


//   f[u][j]:  u子树中到根节点1的距离为j=dep(模k)的节点个数

// 树上任意两点间距离len=depth[x1]+depth[y1]-2*depth[f],f表示点x1和点y1的最近公共祖先。

  //len = j + r - dep * 2  为节点j到节点r的路径长度,  节点j到根节点1的距离为j=dep(模k);

  // 如果len不是k的倍数,则加上       rev =( 2*k + dep * 2 -j-r) % k;  到总跳跃距离ans

// 总跳跃次数为: 总跳跃距离ans/k

// 4 3

// 1 2

// 1 3

// 2 4

//

// 

//


CF竞赛题目讲解_CF791D(树上启发式合并)的评论 (共 条)

分享到微博请遵守国家法律