Codeforces Round #199 (Div. 2)

C:  可以避免用浮点

D:推荐逐格递推法,想学的话去http://blog.csdn.net/crazy_ac/article/details/9819191

E:Qtree 5的弱化版,顺便问一句。。。CF真是没题出了么??

这个题由于是弱化版,没有向qtree 5那样对某个点的颜色取反,所以有一种简易的lct写法,我是跟小水大神学的。。学会了lct,我的splay写法也可以改观很多了

这个题用lct来做的话需要维护两个信息

1:某个点子树内的最浅的红点的深度

2:splay的子树中最小的ans 

ans的值是这么算得,因为两个点之间的距离是dep[u] + dep[v] - 2 * dep[lca];

所以如果v是红点,我们只需要维护一个dep[v]-2*dep[lca]最小值即可

另外,pushdown的时候需要O(1)维护子树的ans值,仔细想一下,最有可能更新答案的肯定是当前链中深度最大的点,因为一开始要更新的点肯定是在链的最底部的

每次更新一个点实际上就是更新了所有的父亲节点方向的信息,只管access到根,然后放下去一个标记即可*_*

done!

代码见

https://github.com/becauseofyou/Contests/tree/master/Codeforces/CF_199div2

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值