淀粉质(点分治)总结

点分治是树上的一种算法范式,可以解决一些树上问题。

从例题来看吧:

P4178 Tree

题目描述

给定一棵 \(n\) 个节点的树,每条边有边权,求出树上两点距离小于等于 \(k\) 的点对数量。

输入格式

第一行输入一个整数 \(n\),表示节点个数。

第二行到第 \(n\) 行每行输入三个整数 \(u,v,w\) ,表示 \(u\)\(v\) 有一条边,边权是 \(w\)

\(n+1\) 行一个整数 \(k\)

输出格式

一行一个整数,表示答案。

输入输出样例 #1

输入 #1

7
1 6 13 
6 3 9 
3 5 7 
4 1 3 
2 4 20 
4 7 2 
10

输出 #1

5

说明/提示

数据规模与约定

对于全部的测试点,保证:

  • \(1\leq n\leq 4\times 10^4\)
  • \(1\leq u,v\leq n\)
  • \(0\leq w\leq 10^3\)
  • \(0\leq k\leq 2\times 10^4\)

解决这个问题,大概分为4个步骤。DFS!计算经过以x为根的路径方案!枚举每一个子节点统计各个点到x的距离!双指针统计!`

posted @ 2025-07-30 11:36  MistyPost  阅读(11)  评论(0)    收藏  举报