Codeforces 739B【树上倍增+差分】

思路:
差分其实是个自己随便创造的东西啊~
差分(这里的小差分):
比如你要算一棵树上 u->v 路径上的次数, v是 u 子树上的一个点,
算一棵树上 u->v 路径上的次数 在这了是算u -> v路径上除了 v 的 每个节点的次数,
对于每一对u, v (u -> v)的,用C[i]计数,可以C[fa[ u ]]–, C[fa[ v ]]++ (fa[i] 是 i 的前驱节点), 然后跑一下DFS,统计次数,具体处理就是对于每个节点去加上他的所有子节点的次数,然后就会发现就这么搞好了。。
树上倍增:
福利:真讲的超级棒!!!
处理完倍增以后,就是每次找一个能“跳”的最远位置!
对于第一次应用倍增和差分,真是感觉非常...爽啊...

要多刷一波倍增的题了!!!

代码参考自:http://blog.csdn.net/cabinfever/article/details/53325717

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值