#P9883. [EC Final 2021] Fenwick Tree
[EC Final 2021] Fenwick Tree
Description
庞教授正在讲授关于 Fenwick 树(也称为二叉索引树)的课程。
在 Fenwick 树中,我们有一个长度为 的数组 ,初始时全为零(对于任何 ,)。每次,庞教授可以对某个位置 ()和一个值 调用以下过程:
def update(pos, val):
while (pos <= n):
c[pos] += val
pos += pos & (-pos)
注意,对于任何正整数 pos,pos & (-pos) 等于 pos 的最大 2 的幂。
在这个过程中, 可以是任意实数。在调用了若干次(零次或多次)后,庞教授忘记了数组 中的确切值。他只记得对于每个从 到 的 , 是否为零。庞教授想知道,在假设他的记忆是准确的情况下,他调用该过程的最小可能次数。
Input Format
第一行包含一个整数 ,表示测试用例的数量。
对于每个测试用例,第一行包含一个整数 。下一行包含一个长度为 的字符串。如果 非零,则字符串的第 个字符为 1,否则为 0。
保证所有测试用例中 的总和不超过 。
Output Format
对于每个测试用例,输出庞教授调用该过程的最小可能次数。可以证明答案总是存在的。
3
5
10110
5
00000
5
11111
3
0
3
Hint
对于第一个例子,庞教授可以依次调用 update(1,1),update(2,-1),update(3,1)。
对于第三个例子,庞教授可以依次调用 update(1,1),update(3,1),update(5,1)。
题面翻译由 ChatGPT-4o 提供。
京公网安备 11011102002149号