题意是求出树上有多少条路径满足路径上权值连起来组成的数字是 M M M 的倍数。
看到树上路径计数就应该知道是点分治。。。
设 a u a_u au 为从 u u u 到根的数字表示, b u b_u bu 是从根到 u u u 的数字表示, d u d_u du 为 u u u 的深度。定义根的深度为 0 0 0 。
对于一个始于 u u u ,终于 v v v 的路径,可以得到如下公式: a u × 1 0 d v + b v ≡ 0 ( m o d M ) a_u \times 10^{d_v}+b_v \equiv 0\pmod{M} au×10dv+b
Codeforces-716E-Digit Tree(点分治)
最新推荐文章于 2021-04-23 20:10:33 发布