洛谷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.据说这题有奇快无比的单调队列做法,我并不会啊,哪位大爷愿意跟我说明一下,在下万分感谢。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值