bzoj1202[hnoi2005]狡猾的商人 -尊龙游戏旗舰厅官网
尊龙游戏旗舰厅官网
收集整理的这篇文章主要介绍了
bzoj1202[hnoi2005]狡猾的商人
小编觉得挺不错的,现在分享给大家,帮大家做个参考.
bzoj1202[hnoi2005]狡猾的商人
题意:
账本上记录了n个月以来的收入情况,其中第i 个月的收入额为ai 。所谓一段时间内的总收入,就是这段时间内每个月的收入额的总和。给出m段时间内的总收入,判断账本是否合法。
题解:
太神了,并查集还能这么用。每月作为一个节点,同时保存父节点表示的月份到该月份的盈利是多少,每次读入一个区间,如果左右端点在同一个集合内,就直接比较两个节点的权值差(因为路径压缩时已经使它们的父节点相同),注意路径压缩时要先递归再维护权值。如果左右端点在不同集合,则合并,设所在子树被合并的那个端点为a2,另一个为a1,a2的根节点为a5,给出的信息为a3,则a5的权值变为w[a5]=w[a1]-w[a2] a3。因为:设a1根节点为a4,s[i]表示i的前缀和,则w[a1]=s[a1]-s[a4] w[a2]=s[a2]-s[a5] a3=s[a2]-s[a1] 显然s[a5]-s[a4]=w[a1]-w[a2] a3=w[a5]。
代码:
1 #include
20160401
转载于:https://www.cnblogs.com/yuanziming/p/5693050.html
总结
以上是尊龙游戏旗舰厅官网为你收集整理的bzoj1202[hnoi2005]狡猾的商人的全部内容,希望文章能够帮你解决所遇到的问题。
- 上一篇: 浏览器的同源限制尊龙游戏旗舰厅官网的解决方案
- 下一篇: