CF2041I.Auto Complete

提高+/省选-

通过率:0%

AC君温馨提醒

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

题目描述

你正在设计一个炫酷的新文本编辑器,并希望为其添加一个智能的自动补全功能,以帮助用户节省时间。其工作方式如下:如果用户输入 "App",你的编辑器会神奇地建议单词 "Application"!更棒的是,用户还可以个性化设置在你的编辑器中自动补全的单词。

你的编辑器将支持 4 种操作(假设当前编辑器中的文本为 tt):

  1. 添加一个自动补全模式 pip_i。
  2. 删除一个自动补全模式 pip_i。
  3. 在 tt 的末尾追加一个字符串 ss。
  4. 从 tt 的末尾删除 cc 个字符。注意,如果 cc 大于 tt 的长度,则将 tt 中的所有字符都删除。

每次操作后,你的编辑器应当建议一个自动补全候选模式 ii,其需满足以下条件:

  1. 字符串 pip_i 的前缀等于 tt。
  2. 如果有多个 pip_i 满足,选择最长的那个。
  3. 如果仍有多个 pip_i 满足,选择字典序最小的那个。
  4. 如果仍有多个 pip_i 满足,选择编号最小的那个。

为简化问题,对于每次操作,输出建议的自动补全模式的编号。如果没有匹配的模式,输出 −1-1。例如,假设有三个候选:"alice"、"bob" 和 "charlie",编号分别为 1、2、3。起初屏幕上没有任何内容,因此应建议 "charlie"(3),因为它最长。然后,假设用户输入了 "b",你应建议 "bob"(2),因为它是唯一以 "b" 开头的。最后,假设用户输入了 "body",你应输出 −1-1,因为没有匹配的模式。

输入格式

第一行包含一个整数 nn,接下来有 nn 行,每行包含一个操作。

共有四种操作类型:

  1. ii pip_i
  2. ii
  3. ss
  4. cc

添加操作后跟一个整数 ii 和一个模式 pip_i,表示用户希望添加编号为 ii 的模式。删除操作后跟一个整数 ii,表示用户希望从模式集合中删除 pip_i。追加操作后跟一个字符串 ss,表示用户将 ss 追加到 tt 的末尾。回退操作后跟一个整数 cc,表示用户从 tt 的末尾删除 cc 个字符。所有参数之间用一个空格分隔。

  • 1≤n≤1061 \leq n \leq 10^6
  • 所有 pip_i 和 ss 的字符总数不超过 2×1062\times 10^6
  • 1≤c≤2×1061 \leq c \leq 2\times 10^6
  • 字符串 pip_i 和 ss 可以包含任何可打印字符,但不包含空格字符(ASCII 编号范围为 3333 到 126126)
  • 每次添加操作的编号 ii 是唯一的
  • 每次删除操作的编号 ii 保证有效
  • 每个编号 ii 满足 0≤i≤n0\le i \le n

输出格式

程序应输出 nn 行。对于每次操作,输出一个整数 ii,表示该操作后建议的自动补全模式编号。如果没有满足条件的 pip_i,输出 −1-1。

输入输出样例

  • 输入#1

    6
    add 1 pattern1_alice
    add 2 pattern2_bob
    add 3 pattern3_charlie
    append pattern
    append 2_bobabc
    backspace 3

    输出#1

    1
    1
    3
    3
    -1
    2
  • 输入#2

    6
    append pattern
    add 1 pattern1_alice____
    add 2 pattern2_bob______
    add 3 pattern3_charlie__
    delete 1
    delete 2

    输出#2

    -1
    1
    1
    1
    2
    3

说明/提示

由 ChatGPT 4.1 翻译

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

首页