交互题 2000ms 256MiB

猜数字游戏

该比赛已结束,您无法在比赛模式下递交该题目。您可以点击“在题库中打开”以普通模式查看和递交本题。

Problem Description

本题为交互题,请确保你已经完成了交互题测试或了解交互题怎么做,监考人员不会回答任何关于如何做交互题的问题。

​你准备玩一个猜数字游戏,给定一个 nn 长的正整数数组aa,数组aa的元素对用户隐藏,你需要猜出aa的最大值,猜测规则如下:

​在游戏开始前,你拥有 C=min(8∗n,13000)C = min(8 * n, 13000) 个硬币;

​在开始猜测前,你需要支付 m2m ^ 2 块的硬币以购买一个具有 mm 面的骰子, 要求 1≤m≤⌊C⌋1 \le m \le \lfloor \sqrt{C} \rfloor。每次投掷该骰子,您将获得一个范围在[1,m][1, m]的随机数,确保随机数服从均匀分布;

​每次猜测时,你需要指定一个正整数 ii (1≤i≤n1 \le i \le n)。程序将帮助你投掷骰子,倘若你获得随机数 xx,那么程序将会返回子数组 a[i:min(i+x−1,n)]a[i : min(i + x - 1, n)] 的最大值。每次猜测都会消耗⌊m⌋ \lfloor \sqrt{m} \rfloor 个硬币。每次猜测过后,程序将随机调整数组aa的元素位置 ;

​当你的硬币数量小于 m\sqrt{m}时,你不允许再次猜测,并输出你猜测到的数组aa的最大值。此外,你允许随时输出猜测到的最大值!当你猜测到的最大值与 aa 的最大值相同时,你将获得游戏的胜利!

Input Format

第一行输入一个正整数 nn, 表示隐藏数组 aa 的长度.

交互

要购买购买一个具有 mm 面的骰子,按照如下格式输出一行(不包含引号)

"! m"

要进行猜测,请按照如下格式输出一行(不包含引号)

"? index"

indexindex 表示你指定的下标索引, 注意要求 1≤index≤n1 \le index \le n. 此时会输入一个正整数 maxmax, 表示子数组 a[i:min(i+x−1,n)]a[i : min(i + x - 1, n)] 的最大值,xx 表示程序生成的随机数.

要输出答案,请按照如下格式输出一行(不包括引号)

"! ans"

ansans 表示你猜到的数组的元素最大值.

若在任何时候输入的数为-1,说明你的询问超出次数/询问不合法/回答不合法/答案错误/其他输入错误,此时,你需要直接退出程序,接收到Wrong Answer。否则,你可能会得到任意一种错误类型作为回应

输出询问或回答后,不要忘记输出换行并刷新缓存区。否则,您可能会收到 Time limit exceeded 判定。为此,请使用:

在 C++ 中 fflush(stdout)或 cout.flush()

在 Java 中 System.out.flush()

在 Pascal 中 flush(output)

在 Python 中 stdout.flush()

对于其他语言,请参阅其他语言的文档。

交互器是自适应的,在每一次猜测操作后,交互器都会重新调整隐藏数组 aa 的元素位置。

Output Format

Sample

// 后面的内容仅代表解释

输入 #1

4	//	隐藏数组的长度
5	//	第一次回答

输出 #1

! 4		//	购买一个具有 4 面的骰子
? 1		//	第一次操作,指定索引为1.
! 5		//	答案正确

​ 隐藏的数组a=[1,3,2,5]a = [1, 3, 2, 5], 第一次操作程序生成的随机数 x=4x = 4, 返回子数组 a[1:4]a[1 : 4] 的最大值maxmax为 55.

输入 #2

5 	//	隐藏数组的长度
2	//	第一次回答
6	//	第二次回答

输出 #2

! 2		//	购买一个具有 2 面的骰子
? 1		//	第一次操作,指定索引为1
? 2		//	第二次操作,指定索引为2
! 6		//	答案正确

​ 隐藏的数组 a=[1,2,3,4,6]a = [1, 2, 3, 4, 6],第一次操作程序生成的随机数 x=2x = 2,返回子数组 a[1:2]a[1 : 2] 的最大值 max=2max = 2;在第一次操作后,隐藏数组调整元素的位置,新的隐藏数组 a=[4,6,1,3,2]a = [4, 6, 1, 3, 2]。第二次操作程序生成的随机数 x=1x = 1,返回子数组 a[2:2]a[2 : 2] 的最大值 max=6max = 6

​ 注意,上述操作并非代表最优操作,仅仅作为操作的演示。

Hint

​ 确保 1≤n≤104,1≤ai≤1091 \le n \le 10 ^ 4, 1 \le a_{i} \le 10^9, 允许 数组元素出现重复.

重庆邮电大学第十九届ACM程序设计大赛(网络赛)

未参加
状态
已结束
规则
XCPC
题目
9
开始于
2025-3-15 0:00
结束于
2025-3-17 0:00
持续时间
48 小时
主持人
参赛人数
3