CFCF2178E.Flatten or Concatenate

提高+/省选-

通过率:0%

AC君温馨提醒

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

题目描述

这是一个交互题。

在工作中摸鱼的时候,妖精 Dilhan 偶然发现了两个数组 aabb。最开始,它们都只包含一个整数 2k2^k(即 a=b=[2k]a=b=[2^k]),其中 kk 是一个非负整数。

Dilhan 随后对这两个数组进行了任意次数(可能为零),任意顺序的如下两种操作:

  1. 扁平化(Flatten)—— 选择 aabb 中的一个数组,在数组中任选一个当前最大的元素 xxxx 不要求在另一个数组中也为最大)。然后,将 xx 替换为在同一位置上的两个 x2\frac x 2。该操作只能在 xx 为偶数时进行。
  2. 拼接(Concatenate)—— 令 aabb 都变为 a+ba+b,其中 ++ 表示数组拼接操作。

在若干操作之后,Dilhan 丢弃了 bb,并将 aa 隐藏起来,向你发起了挑战。

记隐藏数组 aa 的长度为 nn。你可以进行以下询问:

  • 选择一个区间 [l,r][l, r]1lrn1\le l\le r\le n),Dilhan 会告诉你 al+al+1++ara_l+a_{l+1}+\cdots+a_r 的值。

请在最多 300300 次询问中,确定 aa 中的最大元素的值。

输入格式

每组测试包含多个测试用例。第一行包含测试用例数量 tt1t1001\le t\le 100)。接下来的描述依次给出每个测试用例。

每个测试用例的第一行包含一个整数 nn1n1051\le n\le 10^5),表示数组 aa 的长度。

保证 1ai2301\le a_i\le 2^{30},且该数组可由题目描述中的构造过程得到。

保证所有测试用例中 nn 之和不超过 10510^5

输出格式

(交互题,请按照要求输出)

输入输出样例

  • 输入#1

    4
    11
    
    9
    
    4
    
    12
    
    1
    
    1
    
    8
    
    4
    
    4
    
    4
    
    4
    
    8

    输出#1

    ? 3 8
    
    ? 1 4
    
    ? 5 11
    
    ! 2
    
    ? 1 1
    
    ! 1
    
    ? 1 1
    
    ? 2 2
    
    ? 3 3
    
    ? 4 4
    
    ! 4
    
    ! 1073741824

说明/提示

在第一个测试用例中,Dilhan 隐藏的数组 aa[1,1,1,1,2,2,2,1,1,2,2][1, 1, 1, 1, 2, 2, 2, 1, 1, 2, 2]。它的构造过程如下:

# 操作 aa 操作后 bb 操作后
0 初始 [4][4] [4][4]
1 aa 扁平化 [4][2,2][\underline 4] \to [2,2] [4][4]
2 bb 扁平化 [2,2][2,2] [4][2,2][\underline 4] \to [2,2]
3 aa 扁平化 [2,2][2,1,1][2,\underline 2] \to [2,1,1] [2,2][2,2]
4 拼接 [2,1,1,2,2][2,1,1,2,2] [2,1,1,2,2][2,1,1,2,2]
5 aa 扁平化 [2,1,1,2,2][1,1,1,1,2,2][\underline 2, 1, 1, 2, 2] \to [1,1,1,1,2,2] [2,1,1,2,2][2,1,1,2,2]
6 拼接 [1,1,1,1,2,2,2,1,1,2,2][1,1,1,1,2,2,2,1,1,2,2] [1,1,1,1,2,2,2,1,1,2,2][1,1,1,1,2,2,2,1,1,2,2]
  • 询问 ?  3  8\mathtt{?\;3\;8},回答为 1+1+2+2+2+1=91+1+2+2+2+1=9
  • 询问 ?  1  4\mathtt{?\;1\;4},回答为 1+1+1+1=41+1+1+1=4
  • 询问 ?  5  11\mathtt{?\;5\;11},回答为 2+2+2+1+1+2+2=122+2+2+1+1+2+2=12

此时 aa 的最大元素为 22

第二个测试用例中,数组 aa 只有一个元素。通过一次询问即可知道该元素的值,也就是最大值。

第三个测试用例中,Dilhan 隐藏的数组 aa[4,4,4,4,4,4,4,4][4, 4, 4, 4, 4, 4, 4, 4],其构造过程如下:

# 操作 aa 操作后 bb 操作后
0 初始 [4][4] [4][4]
1 拼接 [4,4][4,4] [4,4][4,4]
2 拼接 [4,4,4,4][4,4,4,4] [4,4,4,4][4,4,4,4]
3 拼接 [4,4,4,4,4,4,4,4][4,4,4,4,4,4,4,4] [4,4,4,4,4,4,4,4][4,4,4,4,4,4,4,4]

最大元素为 44

第四个测试用例中,Dilhan 隐藏的数组 aa[229,229,230,229,228,228,229,229][2^{29}, 2^{29}, 2^{30}, 2^{29}, 2^{28}, 2^{28}, 2^{29}, 2^{29}]

首页