CF2069E A, B, AB and BA
题目描述
给定一个由字符 A 和 B 组成的字符串 $s$。
你的任务是将它分割成长度为 $1$ 或 $2$ 的块,使得:
- "A" 类型的块数量不超过 $a$;
- "B" 类型的块数量不超过 $b$;
- "AB" 类型的块数量不超过 $ab$;
- "BA" 类型的块数量不超过 $ba$;
其中 "AA" 和 "BB" 类型的块是被禁止的。原始字符串 $s$ 的每个字符必须恰好属于一个块。
输入格式
第一行包含一个整数 $t$($1 \le t \le 10^4$)——测试用例的数量。接下来输入 $t$ 个独立测试用例。
每个测试用例的第一行包含一个仅由字符 A 和/或 B 组成的字符串 $s$($1 \le |s| \le 5 \cdot 10^5$)。
每个测试用例的第二行包含四个整数 $a$、$b$、$ab$ 和 $ba$($0 \le a, b, ab, ba \le 5 \cdot 10^5$)——分别表示允许的 "A"、"B"、"AB" 和 "BA" 类型块的最大数量。
保证所有测试用例的 $s$ 总长度不超过 $5 \cdot 10^5$。
输出格式
对于每个测试用例,如果能够分割字符串 $s$ 则输出 YES,否则输出 NO。
说明/提示
第三个测试用例中,所有可能的分割方式为:A|B|A、AB|A 或 A|BA。所有这些方式都至少包含一个 "A"。
第四个测试用例中,一种可能的分割方式是:A|B|B|A|B|A|A|B。
第五个测试用例中,一种可能的分割方式是:A|BA|B|BA|AB|BA|AB。
翻译由 DeepSeek R1 完成