CFCF2170D.Almost Roman

普及+/提高

通过率:0%

AC君温馨提醒

该题目为【codeforces】题库的题目,您提交的代码将被提交至codeforces进行远程评测,并由ACGO抓取测评结果后进行展示。由于远程测评的测评机由其他平台提供,我们无法保证该服务的稳定性,若提交后无反应,请等待一段时间后再进行重试。

题目描述

我们定义一个只包含字母 “XVI” 的字符串的值如下:

  • 字母 'X' 的值为 1010
  • 字母 'V' 的值为 55
  • 字母 'I' 的值为 111-1:如果它后面的位置上是字母 'X' 或 'V',则为 1-1;否则为 11
  • 整个字符串的值等于其中所有字母值的总和。

现在你得到了一个仅包含字符 “XVI?” 的字符串,并会询问 qq 次。

在第 ii 次询问时,会给出三个整数:

  • cX, cV, cIc_X,~c_V,~c_I ——分别代表可用字母 'X'、'V' 和 'I' 的数量。

你需要求出,若将字符串中的所有问号用字母 'X'、'V'、'I' 替换(要求每种字母的使用次数不超过其可用数量),该字符串可以得到的最小值是多少。

输入格式

第一行包含一个整数 tt1t1041\leq t\leq 10^4)——表示测试用例的数量。

每个测试用例的第一行包含两个整数 nnqq1n,q3×1051\leq n,q \leq 3\times 10^5)——表示字符串长度和询问数。

第二行给出一个长度为 nn 的字符串,字符串仅由 'X'、'V'、'I'、'?' 构成。

接下来的 qq 行,每行包含三个整数 cX, cV, cIc_X,~c_V,~c_I0cX,cV,cIn0\leq c_X, c_V, c_I\leq n)——分别表示本次查询可用的 'X'、'V'、'I' 的个数。

【附加输入约束】

  • 所有测试用例中 nn 的总和不超过 3×1053 \times 10^5
  • 所有测试用例中 qq 的总和不超过 3×1053 \times 10^5
  • 对于每个询问都有 cX+cV+cIc_X + c_V + c_I 大于等于字符串中问号 '?' 的数量。

输出格式

对于每个询问,输出一个整数——表示将所有问号替换为可用字母后,字符串可能取得的最小值。

输入输出样例

  • 输入#1

    4
    3 3
    ???
    3 0 0
    2 3 1
    0 1 2
    10 7
    ??IV?VXIV?
    0 0 4
    4 4 0
    1 1 2
    1 1 3
    1 1 4
    1 2 1
    2 2 0
    9 5
    ?V????IVV
    9 2 4
    4 1 5
    0 1 4
    4 8 1
    3 2 7
    3 2
    I?V
    0 1 0
    0 0 1

    输出#1

    30
    9
    5
    25
    43
    36
    27
    25
    42
    53
    19
    17
    19
    33
    17
    9
    5
首页