CF1282D.Enchanted Artifact

提高+/省选-

通过率:0%

时间限制:1.00s

内存限制:256MB

AC君温馨提醒

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

题目描述

This is an interactive problem.

After completing the last level of the enchanted temple, you received a powerful artifact of the 255th level. Do not rush to celebrate, because this artifact has a powerful rune that can be destroyed with a single spell ss, which you are going to find.

We define the spell as some non-empty string consisting only of the letters a and b.

At any time, you can cast an arbitrary non-empty spell tt, and the rune on the artifact will begin to resist. Resistance of the rune is the edit distance between the strings that specify the casted spell tt and the rune-destroying spell ss.

Edit distance of two strings ss and tt is a value equal to the minimum number of one-character operations of replacing, inserting and deleting characters in ss to get tt. For example, the distance between ababa and aaa is 22, the distance between aaa and aba is 11, the distance between bbaba and abb is 33. The edit distance is 00 if and only if the strings are equal.

It is also worth considering that the artifact has a resistance limit — if you cast more than n+2n + 2 spells, where nn is the length of spell ss, the rune will be blocked.

Thus, it takes n+2n + 2 or fewer spells to destroy the rune that is on your artifact. Keep in mind that the required destructive spell ss must also be counted among these n+2n + 2 spells.

Note that the length nn of the rune-destroying spell ss is not known to you in advance. It is only known that its length nn does not exceed 300300.

Interaction

Interaction is happening through queries.

Each request consists of a single non-empty string tt — the spell you want to cast. The length of string tt should not exceed 300300. Each string should consist only of the letters a and b.

In response to the query, you will get resistance runes — the edit distance between the strings that specify the casted spell tt and the secret rune-destroying spell ss. Remember that ss contains only the letters a and b.

After breaking the rune, your program should end immediately. A rune is destroyed when you get a response with resistance 00. After receiving the value 00, your program should terminate normally.

In this problem interactor is not adaptive. This means that during any test the rune-destroying spell ss does not change.

If your query is invalid, -1 will be returned. After receiving this your program should immediately terminate normally (for example, by calling exit(0)), otherwise, the testing system may issue an arbitrary verdict.

If the number of spells exceeds limit (n+2n + 2, where nn is the length of the spell ss, which is unknown to you), you will get the Wrong Answer verdict.

Your solution may receive the verdict Idleness Limit Exceeded if you don't output anything or forget to flush the output buffer.

To flush the output buffer, you need to do the following immediately after printing the query and the line end:

  • fflush(stdout) or cout.flush() in C++;
  • System.out.flush() in Java;
  • flush(output) in Pascal;
  • stdout.flush() in Python;
  • for other languages see documentation.

Hacks

For hacks, use the following format:

In a single line print the string ss (1≤∣s∣≤3001 \le |s| \le 300) of letters a and b, which defines the rune-destroying spell.

The hacked solution will not have direct access to the unknown spell.

这是一个交互式问题。

在完成魔法神庙的最后一关后,你获得了一件强大的255级神器。先别急着庆祝,因为这件神器上附有一个强力符文,它能被唯一一个咒语 ss 所摧毁——而这个咒语,正是你需要找出的。

我们定义一个“咒语”为仅由字母 a 和 b 组成的非空字符串。

在任意时刻,你都可以施放任意一个非空咒语 tt,此时神器上的符文将开始抵抗。符文的抵抗值即为所施放咒语 tt 与毁灭符文的咒语 ss 之间的编辑距离(Edit distance)。

编辑距离 是指:将字符串 ss 通过最少次数的单字符操作(替换、插入、删除)转换为字符串 tt 所需的操作总数。例如,ababa 与 aaa 的距离为 22,aaa 与 aba 的距离为 11,bbaba 与 abb 的距离为 33。当且仅当两字符串完全相等时,编辑距离为 00。

还需注意:该神器具有抵抗上限——若你施放的咒语总数超过 n+2n + 2 个(其中 nn 是毁灭咒语 ss 的长度),则符文将被永久封锁。

因此,你必须在至多 n+2n + 2 次施法内摧毁当前神器上的符文。请注意:那个最终成功摧毁符文的咒语 ss 本身也计入这 n+2n + 2 次施法之中。

注意:毁灭符文的咒语 ss 的长度 nn 并未预先告知你,仅知其满足 n≤300n \le 300。

交互方式

交互通过查询(queries)进行。

每次查询包含一个单独的非空字符串 tt —— 即你希望施放的咒语。字符串 tt 的长度不得超过 300300,且其中每个字符只能是 a 或 b。

对于每次查询,你会收到一个整数响应:即符文的抵抗值 —— 也就是所施放咒语 tt 与秘密咒语 ss 之间的编辑距离。请记住,ss 同样仅由字母 a 和 b 构成。

一旦符文被摧毁,你的程序必须立即终止。当某次查询返回抵抗值为 00 时,即表示符文已被摧毁。在收到响应值 00 后,你的程序应正常终止。

本题的交互器(interactor)是非自适应的(non-adaptive),即在整个测试用例中,毁灭符文的咒语 ss 始终保持不变。

若你发出的查询非法(例如字符串含非法字符、为空、长度超限等),将返回 −1-1。收到 −1-1 后,你的程序应立即正常终止(例如调用 exit(0)),否则评测系统可能给出任意错误结果。

若施法次数超过限制(即超过 n+2n + 2 次,其中 nn 是未知的 ss 的长度),你将得到 Wrong Answer 判定。

若你的程序未输出任何内容,或忘记刷新输出缓冲区,则可能收到 Idleness Limit Exceeded 判定。

为刷新输出缓冲区,请在打印完查询字符串及换行符后立即执行以下操作:

  • C++ 中:fflush(stdout) 或 cout.flush();
  • Java 中:System.out.flush();
  • Pascal 中:flush(output);
  • Python 中:stdout.flush();
  • 其他语言请查阅相应文档。

Hack 格式

对于 hack,按如下格式输入:

在一行中输出字符串 ss(1≤∣s∣≤3001 \le |s| \le 300),它由字母 a 和 b 组成,代表毁灭符文的咒语。

被 hack 的程序无法直接访问该未知咒语 ss。

输入输出样例

  • 输入#1

    2
    
    2
    
    1
    
    2
    
    3
    
    0

    输出#1

    aaa
    
    aaab
    
    abba
    
    bba
    
    abaaa
    
    aabba

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

首页