UVA1428 Ping pong(树状数组)

来源:互联网 发布:mac下制作u盘linux 编辑:程序博客网 时间:2024/06/05 04:42

题目:https://uva.onlinejudge.org/index.php?option=com_onlinejudge&Itemid=8&page=show_problem&problem=4174

题解:http://blog.csdn.net/u013480600/article/details/20912063

这个题目是求一个数左边和右边比它小和比他大的数的个数,题解给出最简洁的方法,就是用树状数组求出一个数左边和右边比它小的数的个数,然后用减法得到大的个数,有的同学看过题解可能想可不可以直接,求一个数左边(或右边)比它大的数的个数,方法就是:

       1.可以离散化时倒过来编号

       2.假设树状数组的上限值为MN。对于值是x的数,我们在更新时更新MN+1-x的值。查询相应地改为getsum(MN+1-x)