hdu3954 区间更新+点更新

此题想简单了,一开始以为只需要点更新的。。结果敲了一下就tle了。。。果断分析错误啊。。

昨天晚上是想如果当前值已经是最大值了,那么区间内直接维护就好了。

后来看网上各种设定系数的做法。。。看不懂啊--->实在证不出其正确性。。然后看到一个用数组略微暴力的。。自己试试可以

就是最开始的想法。。我对于每个节点,有个add值来累加经验,那么当前经验满足升级了,那么表明我下次来的时候这个经验的*系数就变了,那么我就要升级了,所以更新这个点。那么怎么更新呢?比较暴力。。每个节点一个数组,保存k个等级。。。。由于k不大可以开下来。然后当要更新等级的时候我就需要点更新了。。因为我的每个点代表一个英雄。那么我就按照点更新的方法,只要有升级我就一直我往下走,然后同时一直把add中的值下放。。然后一直更新到叶子节点 将叶子节点的所有值更新。。但是记住。。由于已经是叶子节点了。。所以当等级达到一定时候,那么前面的等级肯定就没有了此时可以赋值为-1。

然后由于我是在那个节点开始进行点更新,那么递归回来顺便就可以把sum更新。记得这里要更新k次。其他的都和普通区间更新线段树没区别了。

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值