CFCF2163D2.Diadrash (Hard Version)

提高+/省选-

通过率:0%

AC君温馨提醒

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

题目描述

这是本题的 Hard 版本。不同之处在于本题最多可以进行 3030 次询问。只有在你已解决所有版本的本题时才能进行 Hack。

本题为交互题。

有一个你未知的排列 pp,它由 00n1n-1 的整数构成。此外,给定 qq 个区间 [l1,r1],[l2,r2],,[lq,rq][l_1, r_1], [l_2, r_2], \ldots, [l_q, r_q],其中 1lirin1 \le l_i \le r_i \le n

你需要找出在输入提供的 qq 个区间中,能得到的最大的 MEX\operatorname{MEX} 值。形式化地说,你需要确定 maxi=1qMEX([pli,pli+1,,pri])\max_{i=1}^q{\operatorname{MEX}([p_{l_i}, p_{l_i+1}, \ldots, p_{r_i}])} 的值。为此,你最多可以进行 3030 次以下形式的询问:

  • 任选整数 1lrn1 \le l \le r \le n,你将会收到 MEX([pl,pl+1,,pr])\operatorname{MEX}([p_l, p_{l+1}, \ldots, p_r]) 的值。

^{\ast} 排列是指 00n1n-1 的整数的一个序列,每个整数恰好出现一次。例如 [0,3,1,2][0, 3, 1, 2] 是排列,但 [0,0,2,1][0, 0, 2, 1] 不是。

^{\dagger} 序列的 MEX\operatorname{MEX} 是指序列中没有出现的最小非负整数。例如 MEX([0,0,1,3])=2\operatorname{MEX}([0, 0, 1, 3])=2MEX([1,2,2])=0\operatorname{MEX}([1, 2, 2])=0

输入格式

每组测试数据包含多组用例。第一行包含测试用例个数 tt1t1001 \le t \le 100)。接下来是每组测试用例如下:

每组用例第一行包含两个正整数 nnqq4n1044 \le n \le 10^41q31051 \le q \le 3 \cdot 10^5),分别表示排列的长度和区间数量。

接下来的 qq 行每行包含两个整数 li,ril_i, r_i1lirin1 \le l_i \le r_i \le n)。

保证所有测试用例中 nnqq 的总和分别不超过 10410^431053 \cdot 10^5

额外约定:同一测试用例中没有重复的区间。

输入输出样例

  • 输入#1

    3
    4 3
    1 2
    2 4
    1 3
    
    2
    
    0
    
    1
    
    4
    
    6 6
    1 2
    2 4
    3 3
    4 6
    5 5
    6 6
    
    6
    
    1
    
    2
    
    4 4
    1 1
    2 2
    3 3
    4 4

    输出#1

    ? 1 3
    
    ? 4 4
    
    ? 1 1
    
    ? 1 4
    
    ! 2
    
    
    
    
    
    
    
    ? 1 6
    
    ? 3 3
    
    ? 2 4
    
    ! 2
    
    
    
    
    
    ! 1

说明/提示

在第一个示例中,隐藏排列为 p=[0,3,1,2]p = [0, 3, 1, 2],区间为 [1,2],[2,4],[1,3][1, 2], [2, 4], [1, 3]。第 33 个区间最优,因为 MEX([p1,p2,p3])=MEX([0,3,1])=2\operatorname{MEX}([p_1, p_2, p_3]) = \operatorname{MEX}([0, 3, 1]) = 2,为最大值。

第一次询问我们查询 l=1,r=3l=1, r=3,裁判返回 MEX([p1,p2,p3])=2\operatorname{MEX}([p_1, p_2, p_3]) = 2。第二次询问 l=4,r=4l=4, r=4,裁判返回 MEX([p4])=0\operatorname{MEX}([p_4]) = 0。同理,MEX([p1])=1\operatorname{MEX}([p_1])=1MEX([p1,p2,p3,p4])=4\operatorname{MEX}([p_1, p_2, p_3, p_4])=4

最后我们确定答案为 22

第二个示例,p=[3,5,0,1,4,2]p=[3, 5, 0, 1, 4, 2]

第三个示例,p=[0,1,2,3]p=[0, 1, 2, 3]

注意,这只是对交互方式的说明,并未展示任何解题策略。

首页