CF1620C.BA-String

普及+/提高

通过率:0%

时间限制:2.00s

内存限制:256MB

AC君温馨提醒

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

题目描述

You are given an integer kk and a string ss that consists only of characters 'a' (a lowercase Latin letter) and '*' (an asterisk).

Each asterisk should be replaced with several (from 00 to kk inclusive) lowercase Latin letters 'b'. Different asterisk can be replaced with different counts of letter 'b'.

The result of the replacement is called a BA-string.

Two strings aa and bb are different if they either have different lengths or there exists such a position ii that ai≠bia_i \neq b_i.

A string aa is lexicographically smaller than a string bb if and only if one of the following holds:

  • aa is a prefix of bb, but a≠ba \ne b;
  • in the first position where aa and bb differ, the string aa has a letter that appears earlier in the alphabet than the corresponding letter in bb.

Now consider all different BA-strings and find the xx-th lexicographically smallest of them.

给你一个整数 kk 和一个字符串 ss,该字符串仅由字符 'a'(一个小写拉丁字母)和 '*'(一个星号)组成。

每个星号应被替换为若干个(从 00 到 kk 个,含端点)小写拉丁字母 'b'。不同的星号可以被替换成不同数量的字母 'b'。

这种替换所得的结果称为一个 BA-字符串。

两个字符串 aa 和 bb 被认为是不同的,当且仅当它们的长度不同,或存在某个位置 ii 使得 ai≠bia_i \neq b_i。

字符串 aa 在字典序上小于字符串 bb,当且仅当满足以下条件之一:

  • aa 是 bb 的真前缀(即 aa 是 bb 的前缀但 a≠ba \ne b);
  • 在 aa 与 bb 首次出现差异的位置上,aa 中对应位置的字母在字母表中早于 bb 中对应位置的字母。

现在考虑所有互不相同的 BA-字符串,并找出其中字典序第 xx 小的字符串。

输入格式

The first line contains a single integer tt (1≤t≤20001 \le t \le 2000) — the number of testcases.

The first line of each testcase contains three integers nn, kk and xx (1≤n≤20001 \le n \le 2000; 0≤k≤20000 \le k \le 2000; 1≤x≤10181 \le x \le 10^{18}). nn is the length of string ss.

The second line of each testcase is a string ss. It consists of nn characters, each of them is either 'a' (a lowercase Latin letter) or '*' (an asterisk).

The sum of nn over all testcases doesn't exceed 20002000. For each testcase xx doesn't exceed the total number of different BA-strings. String ss contains at least one character 'a'.

第一行包含一个整数 tt(1≤t≤20001 \le t \le 2000)—— 表示测试用例的数量。

每个测试用例的第一行包含三个整数 nn、kk 和 xx(1≤n≤20001 \le n \le 2000;0≤k≤20000 \le k \le 2000;1≤x≤10181 \le x \le 10^{18})。其中 nn 是字符串 ss 的长度。

每个测试用例的第二行是一个字符串 ss,由 nn 个字符组成,每个字符为 'a'(小写拉丁字母)或 '*'(星号)。

所有测试用例的 nn 值之和不超过 20002000。对于每个测试用例,xx 不超过不同 BA-字符串的总数。字符串 ss 中至少包含一个字符 'a'。

输出格式

For each testcase, print a single string, consisting only of characters 'b' and 'a' (lowercase Latin letters) — the xx-th lexicographically smallest BA-string.

对于每个测试用例,输出一个仅由字符 'b' 和 'a'(小写拉丁字母)组成的字符串——字典序第 xx 小的 BA 字符串。

输入输出样例

  • 输入#1

    3
    2 4 3
    a*
    4 1 3
    a**a
    6 3 20
    **a***

    输出#1

    abb
    abba
    babbbbbbbbb

说明/提示

In the first testcase of the example, BA-strings ordered lexicographically are:

  1. a
  2. ab
  3. abb
  4. abbb
  5. abbbb

In the second testcase of the example, BA-strings ordered lexicographically are:

  1. aa
  2. aba
  3. abba

Note that string "aba" is only counted once, even though there are two ways to replace asterisks with characters 'b' to get it.

在示例的第一个测试用例中,按字典序排列的 BA 字符串为:

  1. a
  2. ab
  3. abb
  4. abbb
  5. abbbb

在示例的第二个测试用例中,按字典序排列的 BA 字符串为:

  1. aa
  2. aba
  3. abba

注意:字符串 "aba" 仅被计数一次,尽管存在两种方式将星号替换为字符 'b' 以得到该字符串。

输入解题思路,AI测评打分。不知道怎么写?

首页