功能
    维护前缀和
    单点增加

code
    查询[1 ~ x]的前缀和
        int ask( int x )
        {
            int ans = 0;
            for( int i = x; i; i -= lowbit( i ) )
                ans += tr[i];
            return ans;
        }

    单点增加 a[x] + y
        void add( int x, int y )
        {
            for( int i = x; i <= n; i += lowbit( i ) )
                tr[i] += y;
        }

扩展
    把原数组的差分数组存入树状数组中

    查询x的值
    区间[l ~ r] + d
        add( l, d )
        add( r + 1, -d)