您的位置:首页 > 其它

[树的点分治] [HDU4812] D Tree

2017-07-01 00:49 162 查看
题目传送门

(这次英语题应该比较好懂吧……)

大意是

给定一棵有n个点的树,每个点有权值vi,求是否存在一条路径使得路径上所有点的权值的乘积mod106+3为k,输出路径首尾编号,若有多解输出字典序最小的解。

貌似很像不虚就是要AK

现在求路径上点权的乘积,继续点分治,怎么合并答案?

我们已经统计出一棵子树到重心的权值积了,因为这些乘积m对MOD取余为K,再加入的子树的乘积就应为K×m−1,所以需要求逆元。

如何确定树上合法的两点?在统计乘积时需要记录一下位置,在加入子树时就可以合并了,利用这个更新答案,然后将这些点插入哈希表中,待下次加入子树时备用。

时间复杂度为O(Tnlog22n)。

Code
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: