CF1520E Arranging The Sheep

题目描述

你正在玩一个名为“排列绵羊”的游戏。这个游戏的目标是让所有绵羊排成一行。游戏中的关卡由一个长度为 $n$ 的字符串描述,字符串只包含字符 '.'(空位)和 '*'(绵羊)。每一步,你可以将任意一只绵羊向左或向右移动一格,前提是目标位置存在且为空。只要所有绵羊之间没有空位,即所有绵羊连续排列,游戏就结束。 例如,如果 $n=6$,关卡字符串为 "\*\*.\*..",则可能的游戏过程如下: - 第 $4$ 个位置的绵羊向右移动,关卡状态变为 "\*\*..\*."; - 第 $2$ 个位置的绵羊向右移动,关卡状态变为 "\*.\*.\*."; - 第 $1$ 个位置的绵羊向右移动,关卡状态变为 ".\*\*.\*."; - 第 $3$ 个位置的绵羊向右移动,关卡状态变为 ".\*.\*\*."; - 第 $2$ 个位置的绵羊向右移动,关卡状态变为 "..\*\*\*."; - 所有绵羊已经排成一行,游戏结束。 对于给定的关卡,请你计算完成该关卡所需的最少移动次数。

输入格式

第一行包含一个整数 $t$($1 \le t \le 10^4$),表示测试用例的数量。 接下来每个测试用例包含两行: 第一行包含一个整数 $n$($1 \le n \le 10^6$)。 第二行包含一个长度为 $n$ 的字符串,仅由字符 '.' 和 '*' 组成,表示关卡的描述。 保证所有测试用例中 $n$ 的总和不超过 $10^6$。

输出格式

对于每个测试用例,输出完成该关卡所需的最少移动次数。

说明/提示

由 ChatGPT 4.1 翻译