洛谷 P3313 [SDOI2014]旅行 题解

本文介绍了如何使用动态开点的线段树结合树链剖分解决SDOI2014旅行问题。通过DFS序存放节点,动态创建线段树节点,并实现单点修改、查询等功能。代码中展示了如何处理信仰修改和评级修改操作,以及如何进行查询。最后给出了完整的AC代码。
摘要由CSDN通过智能技术生成

传送门:[P3313 [SDOI2014]旅行]

1 0 5 10^5 105个线段树动态开点+树链剖分

晚点来写详细思路 注意细节

–update–

用动态开点的线段树写法来构建每个信仰的的线段树。按 dfs \text{dfs} dfs 序来存放(对应代码中的 dfn \text{dfn} dfn数组)。

u p d a t e update update函数更新线段树中的值,因为是单点修改,所以不需要 p u s h d o w n pushdown pushdown操作,而 p u s h u p pushup pushup是需要的。

u p d a t e update update过程中发现需要递归的方向没有其孩子节点,会先从 sgt \text{sgt} sgt数组中申请一个作为其孩子节点,然后继续向下递归。

  • 当遇到修改信仰的操作时,将 c x c_x cx信仰线段树上 x x x所在的结点设为 0 0 0,然后将 y y y信仰线段树上的 x x x所在的结点更新为 w x w_x wx
  • 当遇到修改评级时,直接将 c x c_x cx线段树上 x x x所在的结点更新为
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 2
    评论
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值