CF1923A Moving Chips

题目描述

有一条被分成 $n$ 个格子的带子,这些格子从左到右编号为 $1$ 到 $n$。每个格子要么有一个棋子,要么是空的。 你可以进行如下操作任意次(也可以不进行):选择一个棋子,将它移动到它左侧最近的空格子上。你可以选择任意一个棋子,只要它左边至少有一个空格子。移动后,原来棋子所在的格子变为空格。 你的目标是通过若干次操作,使所有棋子连成一块,中间没有空格。你需要求出最少需要多少次操作。

输入格式

第一行包含一个整数 $t$($1 \le t \le 1000$),表示测试用例的数量。 每个测试用例包含两行: - 第一行包含一个整数 $n$($2 \le n \le 50$),表示格子的数量; - 第二行包含 $n$ 个整数 $a_1, a_2, \dots, a_n$($0 \le a_i \le 1$),$a_i = 0$ 表示第 $i$ 个格子为空,$a_i = 1$ 表示第 $i$ 个格子有一个棋子。 输入保证每个测试用例至少有一个格子有棋子。

输出格式

对于每个测试用例,输出一个整数,表示将所有棋子移动成一块且中间没有空格所需的最少操作次数。

说明/提示

在第一个样例中,你可以对第 $7$ 个格子的棋子进行操作。它左边最近的空格是第 $5$ 个格子,于是将其移动到那里。此时所有棋子连成一块。 在第二个样例中,所有棋子已经连成一块。第三个样例同理。 由 ChatGPT 4.1 翻译