#P1690. 强大的零(powerzero)

强大的零(powerzero)

题目描述

给定一个元素全为正整数的序列 A1,A2,,An A_1, A_2, \dots, A_n 。你要进行多次操作,使序列的元素全为零。

对于每次操作,你都可以指定任意一个长度为 m m 的序列

$$B_1, B_2, \dots, B_m \quad (B_i \in \{1, 2, \dots, n\})$$

,并分别将 ABi A_{B_i} 减去 2i1 2^{i-1}

求使给定序列全为零的最小操作次数。

输入格式

  • 第一行包含一个整数 T T 1T1000 1 \le T \le 1000 ),表示测试数据的组数。
  • 对于每个测试数据:
    • 第一行包含一个整数 n n 1n105 1 \le n \le 10^5 ),表示给定序列的长度。
    • 第二行包含 n n 个整数 A1,A2,,An A_1, A_2, \dots, A_n 1Ai109 1 \le A_i \le 10^9 ),表示给定序列。
      可以保证 n105 \sum n \le 10^5

输出格式

  • 对于每个测试数据:
    输出一行,其中包含一个整数,表示答案。

样例

3
5
1 2 3 4 5
2
1 4
1
7
3
3
1

样例 1 解释

对于第一个样例,有一种可能的方案:

  1. 指定 B={1,3,5} B = \{1, 3, 5\} ,操作后,A A 变为 {0,2,1,4,1} \{0, 2, 1, 4, 1\}
  2. 指定 B={3,2,4} B = \{3, 2, 4\} ,操作后,A A 变为 {0,0,0,0,1} \{0, 0, 0, 0, 1\}
  3. 指定 B={5} B = \{5\} ,操作后,A A 变为 {0,0,0,0,0} \{0, 0, 0, 0, 0\}

对于第二个样例,有一种可能的方案:

  1. 指定 B={1,2} B = \{1, 2\} ,操作后,A A 变为 {0,2} \{0, 2\}
  2. 指定 B={2} B = \{2\} ,操作后,A A 变为 {0,1} \{0, 1\}
  3. 指定 B={2} B = \{2\} ,操作后,A A 变为 {0,0} \{0, 0\}

对于第三个样例,有一种可能的方案:

  1. 指定 B={1,1,1} B = \{1, 1, 1\} ,操作后,A A 变为 {0} \{0\}

数据范围

对于全部的数据,
1T1000 1 \le T \le 1000
1n105 1 \le n \le 10^5
1Ai109 1 \le A_i \le 10^9
n105 \sum n \le 10^5