#P9883. [EC Final 2021] Fenwick Tree
[EC Final 2021] Fenwick Tree
Description
Prof. Pang is giving a lecture on the Fenwick tree (also called binary indexed tree).
In a Fenwick tree, we have an array of length which is initially all-zero ( for any ). Each time, Prof. Pang can call the following procedure for some position () and value :
def update(pos, val):
while (pos <= n):
c[pos] += val
pos += pos & (-pos)
Note that pos & (-pos) equals to the maximum power of that divides pos for any positive integer pos.
In the procedure, can be any real number. After calling it some (zero or more) times, Prof. Pang forgets the exact values in the array . He only remembers whether is zero or not for each from to . Prof. Pang wants to know what is the minimum possible number of times he called the procedure assuming his memory is accurate.
Input Format
The first line contains a single integer denoting the number of test cases.
For each test case, the first line contains an integer . The next line contains a string of length . The -th character of the string is 1 if is nonzero and 0 otherwise.
It is guaranteed that the sum of over all test cases is no more than .
Output Format
For each test case, output the minimum possible number of times Prof. Pang called the procedure. It can be proven that the answer always exists.
3
5
10110
5
00000
5
11111
3
0
3
Hint
For the first example, Prof. Pang can call update(1,1), update(2,-1), update(3,1) in order.
For the third example, Prof. Pang can call update(1,1), update(3,1), update(5,1) in order.
京公网安备 11011102002149号