#JLT04B. 2026年J组模拟赛10连测第4场-T2 程老师的消消乐

2026年J组模拟赛10连测第4场-T2 程老师的消消乐

文件读写

  • 输入文件cancel.in
  • 输出文件cancel.out

限制

  • 1000ms
  • 512MB

题目描述

课间,程老师带学生玩一种叫消消乐的小游戏。他在黑板上写下一串由小写字母组成的字母串,又在旁边写下一个整数 kk,然后向全班宣布了游戏规则,请大家来玩。

游戏的黑板上始终摆着一个字母串。游戏过程中只有一种操作:如果当前字母串里存在连续 kk 个位置上的字母完全相同,就把这连续 kk 个字母作为一段,整体从黑板上擦掉。擦掉的瞬间,这一段左边剩下的字母和右边剩下的字母会直接拼到一起,形成一个新的、更短的字母串。拼合是一个需要留意的过程:原来分别位于被擦段左右两侧的字母,在拼合之后成为紧挨着的邻居;如果新的邻居关系使得字母串里再次出现连续 kk 个相同字母,那么这些字母同样满足操作条件,可以继续被擦掉。游戏就按照这个规则一轮接一轮地进行,每一轮擦掉一段恰好 kk 个的相同字母,直到黑板上不存在任何连续 kk 个相同字母为止。到这一步,黑板上的字母串达到稳定,游戏结束。每一次操作,黑板上的字母串长度都恰好减少 kk 个字母,因此游戏总会经过有限步走到结束,不会无限地进行下去。

有几处细节需要说明。其一,每次操作擦掉的是恰好 kk 个字母;如果某一段连续相同字母的长度超过 kk,那么这一长段是按 kk 个一批、一批一批擦掉的,并不是整段一次性擦光。其二,擦掉一段之后左右立刻拼合,拼合新产生的连续 kk 个相同字母也要接着擦掉,不能跳过。其三,同一时刻黑板上可能同时存在多处满足条件的连续 kk 个相同字母,先擦哪一处由玩家自行决定,规则并不指定顺序。

可以证明:无论选择哪一处、按什么顺序擦除,最终稳定后黑板上剩下的字母串都是唯一的。

程老师把初始字母串 ss 和整数 kk 交给你,请你算出游戏稳定后黑板上剩下的字母串。

输入格式

从文件 cancel.in 中读入数据。

第一行一个字符串 ss,表示初始字母串。

第二行一个整数 kk,表示一次擦除的字母个数。

输出格式

输出到文件 cancel.out 中。

一行一个字符串,表示游戏稳定后黑板上剩下的字母串;若黑板最终为空,输出 EMPTY。

数据范围

测试点 ∣s∣≤\lvert s \rvert \le 特殊性质
1∼31 \sim 3 2020 无
4∼64 \sim 6 2×1032 \times 10^3
7∼97 \sim 9 10610^6 A
10∼1110 \sim 11 B
12∼2012 \sim 20 无

特殊性质 A:k=2k = 2。

特殊性质 B:任意一次擦除之后,都不会因为字母拼接而产生新的连续 kk 个相同字母。

对于 100%100\% 的数据,1≤∣s∣≤1061 \le |s| \le 10^6,2≤k≤1062 \le k \le 10^6,ss 只含小写英文字母。

abba
2
EMPTY
aaabaaaa
3
ba
abccba
3
abccba

样例解释

样例 1:abba 中先擦掉中间的两个 bb,剩下的 aa 拼到一起又满足条件,被擦掉,黑板为空,输出 EMPTY。

样例 2:aaabaaaa 开头的 aaa 被擦掉,剩下 baaaa;末尾的 aaaa 按每次 33 个擦掉,剩 11 个 a,最终剩下 ba。

难度 未评定
通过率 37.5%
尝试 32
通过 12
ID
3742
类型
传统题
Time Limit
1000ms
Memory Limit
512MiB
上传者

相关