CF2087D.Uppercase or Lowercase?
通过率:0%
AC君温馨提醒
该题目为【codeforces】题库的题目,您提交的代码将被提交至codeforces进行远程评测,并由ACGO抓取测评结果后进行展示。由于远程测评的测评机由其他平台提供,我们无法保证该服务的稳定性,若提交后无反应,请等待一段时间后再进行重试。
题目描述
这是一个交互题。
在某个数据库中,存储着 n 个 handle,形式为一个编号列表。你对其中某个特定的 handle h 感兴趣,或者更准确地说,你想知道它在列表中的位置。
你可以向数据库询问列表中的第 i 个位置,数据库会返回该位置上的 handle。
所有 handle 都是非空字符串,由不超过 20 个小写拉丁字母组成,除了第一个字母可以是小写或大写拉丁字母。
你已知所有 handle 都按字典序排序,但问题在于你不知道大写字母是否被认为比小写字母小。换句话说,你不知道是所有以大写字母开头的 handle 排在前面,后面是以小写字母开头的,还是相反,即所有以小写字母开头的 handle 排在前面,后面是以大写字母开头的。
字典序是标准的字符串比较顺序,正式定义如下:
- 如果字符串 s 和 t 在某些位置不同,最早不同的位置为 i,那么当且仅当 si<ti 时,字符串 s 在字典序上排在 t 前面(例如,对于字符串 cats 和 current,最早不同的位置是第 2 位,字符 a 小于字符 u,所以 cats 在字典序上小于 current);
- 如果字符串 s 和 t 没有不同字符的位置,则较短的字符串排在前面。例如,字符串 cat 排在字符串 cats 前面。
由于对数据库的访问受限,你最多只能向数据库询问 10 次。已知你感兴趣的 handle 一定在列表中,请确定它在列表中的位置。
输入格式
第一行包含整数 n 和字符串 h(1≤n≤500)——列表中 handle 的总数以及你要查找的 handle。
保证所有 handle 都是非空字符串,长度不超过 20,只包含小写拉丁字母,除了第一个字母可以是大写字母。
保证所有 handle 已排序、互不相同,且给定的 handle 一定在列表中。
输出格式
每次询问,输出如下格式的字符串(不含引号):
- "? i"(1≤i≤n)
评测器会返回一个字符串 s,即列表中第 i 个位置上的 handle。
当你准备好输出答案时,输出如下格式的字符串(不含引号):
- "! i"(1≤i≤n)
并终止程序。输出答案不计入查询次数。
交互器是非自适应的,也就是说,每个测试的 handle 列表在测试开始前就已固定。
如果你的程序询问次数超过 10 次(不包括输出答案)或查询格式不正确,评测器会返回字符串 "-1"。此时你的程序应立即终止,以获得 Wrong Answer 判定。否则,你的解答会继续从已关闭的流中读取,可能会收到任意判定。
每次输出查询后,不要忘记输出换行并刷新输出流。否则,你可能会收到 Idleness limit exceeded 判定。为此,请使用 System.out.flush()。
输入输出样例
输入#1
4 adedalic Bleddest Neon adedalic awoo
输出#1
? 1 ? 2 ? 3 ? 4 ! 3
输入#2
6 tourist jiangly tourist Radewoosh
输出#2
? 1 ? 3 ? 6 ! 3
说明/提示
注意,示例中的空格仅为增强可读性。实际评测时,交互器不会输出任何空行。
由 ChatGPT 4.1 翻译
输入解题思路,AI测评打分。不知道怎么写?