洛谷3714暨bzoj4860,BJOI2017树的难题

点分治好题啊。
首先,我用前向星,将边以出发点为第一关键字,边的颜色编号为第二关键字排序。点分治之后,对于当前点v,我按照排序后的边的顺序,顺次处理v的子树。对于每棵子树a,记该子树连向父亲v的边 位 Ea ,则a 对答案的贡献有两种:
1.另一颗子树b,且 Ea 不等于 Eb 。那么我们对于所有这种子树b中的点u,按深度建立一颗线段树,维护以u到v的路径的最值,这样每次直接查询即可。
2.1.另一颗子树b,且 Ea 等于 Eb 。与1类似,但最后求答案时要减去 Ea 的颜色权值
具体实现时,我同时维护两棵线段树,一个保存情况2的线段树,另一个保存情况1的线段树,每当处理完一种颜色,就把两棵线段树合并(这竟是本渣第一次写线段树合并)
两个疑问:
1.我的代码,大家可以发现,我的代码中,maxn是到4*10^5,远超题目范围。但如果我的maxn只开到2*10^5,会wrong answer,哪位大爷愿意帮我解释一下(本蒟蒻被这东西浪费了一两个小时,后来手动随机改代码,不小心AC了,并不知道到是为什么)
2.据说这题有奇快无比的单调队列做法,我并不会啊,哪位大爷愿意跟我说明一下,在下万分感谢。

参与评论 您还未登录,请先 登录 后发表或查看评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
©️2022 CSDN 皮肤主题:编程工作室 设计师:CSDN官方博客 返回首页

打赏作者

zxin__

你的鼓励将是我创作的最大动力

¥2 ¥4 ¥6 ¥10 ¥20
输入1-500的整数
余额支付 (余额:-- )
扫码支付
扫码支付:¥2
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、C币套餐、付费专栏及课程。

余额充值