CF2010C2.Message Transmission Error (hard version)

普及+/提高

通过率:0%

AC君温馨提醒

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

题目描述

这是一个难度较高的问题。它与简单版的区别仅在于约束条件不同。

在伯兰州立大学,服务器之间的本地网络并非总是运行无误。当连续传输两条相同的信息时,可能会发生错误,导致两条信息合并为一条。在这种合并中,第一条信息的结尾与第二条信息的开头重合。当然,合并只能发生在相同字符处。合并的长度必须是一个小于信息文本长度的正数。

例如,当连续传送两条信息abrakadabra时,可能会出现所述类型的错误、导致出现类似abrakadabrakadabra或abrakadabrakadabra的信息(前者在一个字符处发生合并,后者在四个字符处发生合并)。

给定接收到的报文 t ,判断这是否可能是本地网络运行中出现所述类型错误的结果,如果是,请确定可能的值 s 。

两个报文完全重叠的情况不应视为错误。例如,如果收到的报文是abcd,则应认为其中没有错误。同样,简单地在一条信息后附加另一条信息也不是错误的标志。例如,如果收到的信息是 abcabc,也应认为其中没有错误。

输入格式

一个非空字符串 t ,该字符串由拉丁字母的小写字母组成。字符串 t 的长度不超过 4×10⁵ 个字符。

输出格式

如果信息 t 不能包含错误,则在单行输出中输出 NO (不带引号)。
否则,在第一行输出YES(不带引号),在下一行输出字符串s(可能导致错误的信息)。如果有多个可能的答案,可以输出任意一个。

输入输出样例

  • 输入#1

    abrakadabrabrakadabra

    输出#1

    YES
    abrakadabra
  • 输入#2

    acacacaca

    输出#2

    YES
    acacaca
  • 输入#3

    abcabc

    输出#3

    NO
  • 输入#4

    abababab

    输出#4

    YES
    ababab
  • 输入#5

    tatbt

    输出#5

    NO

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

首页