CF2232C2 Seating Arrangement (Hard Version)

题目描述

这是该题目的 Hard 版本。与其它版本的区别在于本版本中 $n$、$x$、$s$、$t$ 的约束范围更大。只有解决了所有版本后才可以进行 Hack。 Alice 的朋友们来到派对,现在他们正排队准备进入派对。 派对上有 $x$ 张桌子,每张桌子有 $s$ 个座位。每个座位只能坐一个人。 每位朋友有以下三种性格之一: - 内向型(I):必须坐在一张空桌子上。 - 外向型(E):必须坐在一张非空桌子上。 - 两性型(A):可以坐在任何桌子上。 最开始,所有座位都是空的。然而,由于 Alice 在吃蛋糕,她的朋友们已经排好队了,Alice 不能更改他们的顺序。对于队伍中的每个人,Alice 必须为他分配桌子或将其请出派对。每个人都在下一个人被分配桌子之前就已经就座。 为了让派对更加有趣,Alice 想要让尽可能多的朋友参加派对。请帮助她计算能够参加派对的最多人数。 注意:一个朋友一旦入座,即使之后再看不符合其性格,也不能移动座位。

输入格式

每个测试包含多组测试用例。第一行为测试用例数 $t$($1 \le t \le 10^4$)。接下来的部分为每组测试用例的描述。 每个测试用例的第一行包含三个整数 $n$、$x$、$s$($1 \le n,x,s \le 2 \cdot 10^5$),分别表示 Alice 的朋友人数、派对的桌子数、每张桌子的座位数。第二行包含一个长度为 $n$ 的字符串 $u$,仅由字母 A、E、I 组成,分别代表两性型、外向型、内向型。 保证所有测试用例中 $n$ 的总和不超过 $2 \cdot 10^5$。

输出格式

对于每个测试用例,输出一个整数:能入座的最大人数。

说明/提示

在第一个测试用例中,有 $2$ 张桌子,每张桌子有 $2$ 个座位。以下是一种使入座人数最多的分配方式: 第一个人是外向型。由于所有桌子都是空的,他只能离开派对。 第二个人是内向型。Alice 可以让他坐在第一张空桌子上。 第三个人是两性型。Alice 可以让他坐在第一张桌子上。 第四个人是内向型。Alice 可以让他坐在第二张空桌子上。 第五个人是外向型。Alice 可以让他坐在第二张非空桌子上。 这样有四个人参加了派对。这是最大值,因为派对上一共有四个座位。 由 ChatGPT 5 翻译