题意:
给一棵树,求两两距离%3为0,1,2的各个距离和。
比赛时由于沉迷于边分治,想转移想到自闭。最后被提醒用点的分治的方法做。就想转移方程真的恶心。
可以想到$O(n^2)$就是对每个点进行搜索。
那么对于一个点的搜索应该是
这样只能处理一个节点所贡献的值,尝试转移。
假设已知$dis[1][j]$和$num[1][j]$求$dis[2][j]$和$num[2][j]$
那么先求$2$的爸爸$1$去掉$2$这条路之后的$dis[],num[]$
根据之前的式子,其实就是反过来。
那此时问题又变得简单了,就是将$1$这个儿子添到$2$上
代码
1 |
|