#1409. [CZOI2025 D] 压缩

[CZOI2025 D] 压缩

题目描述

小 Y 开发了一种名为“别重复”的新型数据压缩策略。“别重复”作用于字符串,若字符串中存在两个连续相同的子串,则会删除其中一个。例如,在字符串 alfalfaseeds\tt alfalfaseeds 中,“别重复”可删除 seeds\tt seeds 中的一个 e\tt ealfalfa\tt alfalfa 中的一个 lfa\tt lfa,得到 alfaseds\tt alfaseds。 “别重复”还能利用先前的删除效果,例如在 seventeenth baggage\tt seventeenth\ baggage 中,先删除重复的 e\tt eg\tt g 得到 sevententh bagage\tt sevententh\ bagage,再删除重复的 ent\tt entag\tt ag,最终得到 seventh bage\tt seventh\ bage

当存在多个重复子串可删除时,最优的“别重复”会选择使最终字符串最短的方式。例如,在 ABBCDCABCDCD\tt ABBCDCABCDCD 中,优先删除开头的 B\tt B 再删除 ABCDC\tt ABCDC 可压缩为 ABCD\tt ABCD,而若先删除末尾的 CD\tt CD 再删除 B\tt B 则最终只能得到 ABCDCABCD\tt ABCDCABCD。最优的“别重复”会选择先删除 B\tt B 再删除 ABCDC\tt ABCDC 的方式。

小 Y 要求为带通配符的二进制字符串(仅含 0,1,#\tt 0,1,\##\tt\# 为通配符)实现最优的“别重复”算法。你需要在进行“别重复”压缩算法前为通配符进行赋值,值为 0\tt 0 或者 1\tt 1,使得赋值之后的二进制字符串通过应用最优的“别重复”能得到最短的字符串。

输入格式

一行一个带通配符的二进制字符串。

输出格式

一行一个字符串表示应用最优的“别重复”能得到的最短字符串。数据保证应用最优的“别重复”能得到的最短字符串有且只有一种唯一情况。

111#
1
10#
10
10##1
101

数据范围

本任务共有 1010 个数据。

对于全部数据:保证字符串长度不超过 10510^5,数据保证应用最优的“别重复”能得到的最短字符串有且只有一种唯一情况。

测试点编号 特殊性质
121\sim2 字符串长度不超过 33
343\sim4 字符串中不包含 0\tt0
585\sim8 字符串中不包含 #\tt\#
9109\sim10