QOJ.ac

QOJ

시간 제한: 5 s 메모리 제한: 512 MB 총점: 100 인터랙티브

#13593. Mađioničar

통계

你可能听说过,Malnar 先生在业余时间会表演魔术。他最近在著名的电视节目 Penn & Teller: Fool Us 中的亮相风靡全球。他自称为“魔术师 Malnar 先生”(The Magical Mr. Malnar),表演了一个令人难以置信的心灵感应魔术,让所有人为之倾倒。

他首先从观众中邀请了一位热心的志愿者,并请其在脑海中构思一个由恰好 $N$ 个字母组成的任意字符串。接着,他开始娱乐观众,期间偶尔瞥一眼志愿者,最后他宣称:“你的字符串中最长回文子串的长度为 $L$”。在志愿者确认这确实正确后,观众们都惊呆了。

然而,细心的观众和 Malnar 先生的密友怀疑这并不是读心术,而是通过巧妙的措辞选择,结合对面部表情的极佳解读,从而获取了足够的信息来完成这个魔术。

虽然看起来 Malnar 先生只是在开玩笑,但他时不时会提到某个数字区间 $[l, r]$(其中 $1 \le l \le r \le N$),并短暂地看一眼志愿者。有传言说,他仅凭志愿者的面部表情,就能确定该字符串中从第 $l$ 个字母到第 $r$ 个字母(闭区间)组成的子串是否为回文。

你需要编写一个程序,以证实如果传言属实,Malnar 先生确实能够收集到足够的信息,来确定志愿者所选择的秘密字符串的最长回文子串的长度。

(注:回文是指正着读和倒着读都相同的字符串。字符串的子串是指由该字符串中第 $l$ 个到第 $r$ 个字符组成的字符串,其中 $1 \le l \le r \le N$。回文子串是指同时也是回文的子串。)

交互

这是一个交互式任务。你的程序必须与主办方编写的程序进行通信,该程序模拟了题目描述中志愿者的行为。

在交互开始前,你的程序应当从标准输入中读取一个整数 $N$,即秘密字符串的长度。

之后,你的程序可以通过向标准输出写入来发送查询请求。每个查询必须单起一行,格式为 ? l r,其中 $1 \le l \le r \le N$。在写入每个查询后,你的程序应当刷新输出缓冲区(flush),并从标准输入中读取答案。如果子串 $[l, r]$ 是回文,则答案为 1;如果不是,则答案为 0。你的程序最多可以进行 $200\,000$ 次此类查询。

在你的程序推导出最长回文子串的长度后,应当向标准输出写入一行,格式为 ! L,其中 $L$ 为该长度。之后,你的程序应当再次刷新输出缓冲区,并正常结束运行。

注意:你可以从评测系统中下载示例源代码,其中展示了如何正确进行交互(包括刷新输出缓冲区)。

数据范围

子任务 分值 数据范围
1 13 $1 \le N \le 7500$
2 25 $1 \le N \le 65\,000$
3 25 $1 \le N \le 100\,000$,且秘密字符串仅由字母 ab 组成
4 37 $1 \le N \le 100\,000$

样例

输入样例 1

5
1
0
1
0
1

输出样例 1

? 1 1
? 2 3
? 2 4
? 3 5
? 1 5
! 5

说明 1

在这个例子中,志愿者选择的字符串是 neven

  • 首先,程序从标准输入读取字符串长度 $N = 5$。
  • 程序询问 ? 1 1,系统回答 1(子串 n 是回文)。
  • 程序询问 ? 2 3,系统回答 0(子串 ev 不是回文)。
  • 程序询问 ? 2 4,系统回答 1(子串 eve 是回文)。
  • 程序询问 ? 3 5,系统回答 0(子串 ven 不是回文)。
  • 程序询问 ? 1 5,系统回答 1(子串 neven 是回文)。
  • 最后,程序确定最长回文子串的长度为 $5$,输出 ! 5 并结束。

Discussions

About Discussions

The discussion section is only for posting: General Discussions (problem-solving strategies, alternative approaches), and Off-topic conversations.

This is NOT for reporting issues! If you want to report bugs or errors, please use the Issues section below.

Open Discussions 0
No discussions in this category.

Issues

About Issues

If you find any issues with the problem (statement, scoring, time/memory limits, test cases, etc.), you may submit an issue here. A problem moderator will review your issue.

Guidelines:

  1. This is not a place to publish discussions, editorials, or requests to debug your code. Issues are only visible to you and problem moderators.
  2. Do not submit duplicated issues.
  3. Issues must be filed in English or Chinese only.
Active Issues 0
No issues in this category.
Closed/Resolved Issues 0
No issues in this category.