CF1702D Not a Cheap String

题目描述

给定一个由小写拉丁字母组成的字符串 $s$。它的“价格”定义为其中所有字母对应的字母表序号之和(即 $1$ 到 $26$ 之间的整数)。例如,字符串 abca 的价格为 $1+2+3+1=7$。 现在给定字符串 $w$ 和整数 $p$。请你从 $w$ 中删除最少数量的字母,使得其价格不超过 $p$,并输出最终得到的字符串。注意,最终得到的字符串可以为空。你可以删除任意位置的字母,不要求连续。如果原始字符串 $w$ 的价格已经不超过 $p$,则无需删除任何字母,直接输出 $w$。 删除字母时,剩余字母的顺序必须保持不变。例如,从字符串 test 删除字母 e 后得到 tst。

输入格式

输入的第一行为一个整数 $t$($1 \le t \le 10^4$),表示测试用例的数量。接下来是 $t$ 组测试用例的描述。 每组测试用例包含两行。 第一行为字符串 $w$,非空且只包含小写拉丁字母,长度不超过 $2 \cdot 10^5$。 第二行为一个整数 $p$($1 \le p \le 5\,200\,000$)。 保证所有测试用例中字符串 $w$ 的总长度不超过 $2 \cdot 10^5$。

输出格式

输出恰好 $t$ 行,第 $i$ 行为第 $i$ 个测试用例的答案。请输出通过删除若干字母(可以为零)得到的、价格不超过 $p$ 的最长字符串。如果有多种答案,输出任意一种均可。 注意,空字符串也是一种可能的答案。在这种情况下,直接输出空行即可。

说明/提示

由 ChatGPT 4.1 翻译