http://www.ifrog.cc/acm/problem/1117?contest=1016&no=1 其实我是第一次这样用线段树. 首先把所有出现过的数字全部离散化.那么数字就是从[1, 100000]了. 把他们看成一个个独立的节点.每次插入一个数字,就在那个位置加1. 那么线段树维护区间总和,想知道小于x的数字有多少个,直接区间查询[1, x - 1]即可. 如果把小于x的数,变成x,相当于把[1, x - 1]中出现了多少个数字,贡献 add 到 x这个位置,然后把[1, x -…