P9883 [EC Final 2021] Fenwick Tree

题目描述

庞教授正在讲授关于 Fenwick 树(也称为二叉索引树)的课程。 在 Fenwick 树中,我们有一个长度为 $n$ 的数组 $c[1\ldots n]$,初始时全为零(对于任何 $1\le i\le n$,$c[i]=0$)。每次,庞教授可以对某个位置 $pos$($1\leq pos \leq n$)和一个值 $val$ 调用以下过程: ```cpp def update(pos, val): while (pos

输入格式

第一行包含一个整数 $T~(1 \le T \le 10^5)$,表示测试用例的数量。 对于每个测试用例,第一行包含一个整数 $n~(1 \le n \le 10 ^ 5)$。下一行包含一个长度为 $n$ 的字符串。如果 $c[i]$ 非零,则字符串的第 $i$ 个字符为 `1`,否则为 `0`。 保证所有测试用例中 $n$ 的总和不超过 $10^6$。

输出格式

对于每个测试用例,输出庞教授调用该过程的最小可能次数。可以证明答案总是存在的。

说明/提示

对于第一个例子,庞教授可以依次调用 `update(1,1)`,`update(2,-1)`,`update(3,1)`。 对于第三个例子,庞教授可以依次调用 `update(1,1)`,`update(3,1)`,`update(5,1)`。 题面翻译由 ChatGPT-4o 提供。