CF2245A Who Watches the Watchpig?
题目描述
有 $n$ 只小猪排成一行,从左到右编号为 $1$ 到 $n$。每只小猪要么面朝左,要么面朝右。
如果有两只小猪 $x$ 和 $y$ 满足 $x
输入格式
每个测试包含多组用例。第一行为测试用例数 $t$($1 \le t \le 500$)。接下来每组用例如下:
每个测试用例的第一行包含两个整数 $n$ 和 $k$($1 \le k < n \le 100$),表示小猪的数量和小猪需要属于的最少互望猪对数。
第二行是一个长度为 $n$ 的字符串 $s$,仅由字符 $\mathtt{L}$ 和 $\mathtt{R}$ 组成。如果 $s_i=\mathtt{L}$,说明第 $i$ 只小猪面朝左;如果 $s_i=\mathtt{R}$,说明第 $i$ 只小猪面朝右。
输出格式
对于每个测试用例,如果无法使所有小猪都变为安全的,就输出 $-1$。否则,输出最少需要翻转的小猪数目。
说明/提示
在第一个测试用例中,一种最优解是翻转第 $1$ 只小猪。此时,第 $1$ 只和第 $3$ 只小猪组成互望猪对 $(1,3)$,第 $2$ 只小猪和第 $1$ 只小猪组成互望猪对 $(1,2)$。每只小猪都属于至少 $k=1$ 个互望猪对,因此所有小猪都是安全的。
在第二个测试用例中,可以证明无法让所有小猪都变得安全。
在第三个测试用例中,最优解是翻转第 $2$ 只和第 $5$ 只小猪。例如,现在第 $2$ 只小猪属于 $(2,3)$ 和 $(2,5)$ 这两个互望猪对,第 $4$ 只小猪属于 $(4,5)$ 和 $(4,6)$ 这两个互望猪对,其余小猪也都安全。
由 ChatGPT 5 翻译