QOJ.ac

QOJ

时间限制: 1 s 内存限制: 512 MB 总分: 100

#7713. Rikka with Mutex

统计

有时,技术术语中蕴含着某种人生哲学。互斥锁(Mutex)就是其中之一。在通往梦想的道路上,你可能会被某些困难所阻碍,这时你需要有人停下脚步,帮助你度过难关。

为了让你了解互斥锁背后的哲学,Rikka 提出了一个简单的问题。也许你们中有些人对互斥锁了解不多,所以她用另一个场景来代替它。

有一排 $n$ 个门,从左到右排列。几个人站在所有门的左侧,他们都想去右侧。门有两种:黑色和白色。这些人共享能量,用一个非负整数 $E$ 表示。初始时,$E = 0$。

如果一个人穿过一扇白色门,此人将为团队获得一点能量:$E$ 的值增加 1。如果一个人穿过一扇黑色门,此人将失去一点能量:$E$ 的值减少 1。由于 $E$ 必须是非负整数,如果 $E = 0$,则在有人穿过白色门之前,没有人能穿过黑色门。你可以假设不会有两个人同时移动。没有人可以从右向左移动。

我们用 “P” 表示黑色门,“V” 表示白色门,并用由 “P” 和 “V” 组成的字符串来表示这一排门。最初,所有人都站在字符串的开头,理想情况下,他们都想穿过整个字符串。不幸的是,有时这可能是不可能的。因此,所有人都会无私地行动,他们的共同目标是至少让一个人到达所有门的右侧。

你的任务是找出为了实现这一目标,该团队所需的最少人数。

例如,如果门排是 “VPP”,他们至少需要两个人:第一个人穿过第一扇白色门,为团队获得一点能量,然后第二个人就能穿过整个字符串。

输入格式

第一行包含一个整数 $t$ ($1 \le t \le 10^3$),表示测试用例的数量。

每个测试用例占一行。该行包含一个由字母 “P” 和 “V” 组成的字符串 $s$ ($1 \le |s| \le 10^5$),描述了门的排列。

保证 $|s| > 1000$ 的测试用例不超过 30 个。

输出格式

对于每个测试用例,在单独的一行中输出一个整数:实现共同目标所需的最少人数。如果无论人数多少都无法实现目标,则输出 -1。

样例

输入 1

4
VPP
VPPVVVVPPPPPPPP
VPPPPPPPPPPPPPP
P

输出 1

2
3
14
-1

Discussions

About Discussions

The discussion section is only for posting: General Discussions (problem-solving strategies, alternative approaches), and Off-topic conversations.

This is NOT for reporting issues! If you want to report bugs or errors, please use the Issues section below.

Open Discussions 0
No discussions in this category.

Issues

About Issues

If you find any issues with the problem (statement, scoring, time/memory limits, test cases, etc.), you may submit an issue here. A problem moderator will review your issue.

Guidelines:

  1. This is not a place to publish discussions, editorials, or requests to debug your code. Issues are only visible to you and problem moderators.
  2. Do not submit duplicated issues.
  3. Issues must be filed in English or Chinese only.
Active Issues 0
No issues in this category.
Closed/Resolved Issues 0
No issues in this category.