CF2172H Shuffling Cards with Problem Solver 68!

题目描述

Aru 喜欢玩纸牌游戏(扑克、德州扑克、Balatro 等),她已经掌握了洗牌的艺术,尤其是完美的洗牌技巧。现在她正在和 Mutsuki 一起玩游戏,该由她洗牌了! 然而,Mutsuki 知道 Aru 的洗牌技巧实在太完美了。实际上,给定一副偶数张的牌,Aru 总是进行完美的洗牌:她将牌组等分成两份,然后交错地合并在一起。形式上,如果牌堆用长度为 $n$ 的字符串 $s$ 表示,其中 $s_i$ 表示从顶端开始的第 $i$ 张牌,那么一次洗牌后得到的新牌堆为 $$ s' = s_1 + s_{n/2 + 1} + s_2 + s_{n/2 + 2} + \ldots + s_{n/2} + s_n。 $$ Mutsuki 还知道,每次 A​ru 洗牌时都会精确地进行 $t$ 次洗牌。 现在 Mutsuki 手上有一副 $2^k$ 张的牌,用一个字符串 $d$ 表示。在把牌组交给 Aru 之前,Mutsuki 可以选择切牌,也就是把牌顶的一部分牌移动到牌底。形式上,她可以任选 $m$,$0 \leq m \leq 2^k - 1$,得到新的牌堆 $$ d' = d_{m+1} + d_{m+2} + \ldots + d_{2^k} + d_1 + d_2 + \ldots + d_m。 $$ 在这 $2^k$ 种切牌方式中,Mutsuki 希望选择一种,使得经过 Aru 洗牌 $t$ 次后,最终得到的牌堆字典序最小。你能帮她找到这个结果吗?

输入格式

第一行包含两个整数 $k$ 和 $t$,表示牌组的规模参数和 Aru 洗牌的次数。 第二行包含一个长度为 $2^k$ 的小写字母字符串 $d$,表示 Mutsuki 手里的原始牌堆。 - $1 \leq k \leq 18$ - $0 \leq t \leq 10^9$

输出格式

输出一行,表示在 Mutsuki 先切牌、Aru 洗牌 $t$ 次后,最终可能获得的字典序最小的牌堆。

说明/提示

由 ChatGPT 5 翻译