#P14507. 缺零分治 mexdnc

    ID: 13820 远端评测题 2000ms 512MiB 尝试: 0 已通过: 0 难度: 6 上传者: 标签>贪心二分洛谷原创O2优化洛谷月赛

缺零分治 mexdnc

题目描述

给定一个正整数 nnnn 个二元组 (ai,bi)(a_i,b_i),表示现在有 bib_i 个大小为 aia_i 的数。

定义一个可重集合的 mex\operatorname{mex} 为最小的没有在这个集合中出现的自然数。

你需要将这 i=1nbi\sum_{i=1}^{n} b_i 个数划分成 k(k1)k(k\ge 1) 个可重集合,使得这 kk 个可重集合的 mex\operatorname{mex} 之和恰好mm,并最小化这个 kk

现在有 qq 组询问,对于每一组询问给定一个 mm,你需要输出最小的 kk,如果无解则输出 1-1

输入格式

本题包含多组测试数据。

输入的第一行包含一个整数 TT,表示测试数据的组数。

接下来包含 TT 组数据,每组数据的格式如下:

  • 第一行包含两个整数 n,qn,q,表示有 nn 个二元组并且存在 qq 次询问。

  • 对于接下来的 nn 行每行输入两个整数,表示二元组 (ai,bi)(a_i,b_i)

  • 对于接下来的 qq 行每行输入一个整数 mm 表示一次询问。

输出格式

对于每组测试数据输出 qq 行,每行包含一个整数,表示对应的答案。

1
4 5
0 3
1 4
2 1
4 1
0
3
4
7
8
-1
1
2
3
-1

提示

【样例 1 解释】

对于 m=0m=0m=8m=8 都可以证明不存在划分方案使得有解。

对于 m=3m=3,可以将所有数划分为一个集合 S={0,0,0,1,1,1,1,2,4}S=\{0,0,0,1,1,1,1,2,4\},这个集合的 mex\operatorname{mex}33

对于 m=4m=4,可以将所有数划分为两个集合 S1={0,0,1,1,1,1,2}S_1=\{0,0,1,1,1,1,2\}S2={0,4}S_2=\{0,4\},这两个集合的 mex\operatorname{mex} 之和为 3+1=43+1=4

对于 m=7m=7,可以将所有数划分为三个集合 S1={0,1,2,4},S2={0,1},S3={0,1,1}S_1=\{0,1,2,4\},S_2=\{0,1\},S_3=\{0,1,1\},这三个集合的 mex\operatorname{mex} 之和为 3+2+2=73+2+2=7

【样例 2 解释】

我们提供了一组大样例,该样例共有 1010 组测试数据,其中第 i(1i10)i(1\leq i\leq 10) 组测试数据满足数据范围中描述的测试点 2i12i-1的限制。

数据范围

对于所有的数据,满足:

  • 1T101\le T\le 10
  • $1\le n,q\le 10^5,0\le a_i\le 10^9,a_{i-1}<a_i,1\le b_i\le 10^9,0\le m\le 10^{18}$。

::cute-table{tuack}

测试点编号 n,qn,q\leq mm \leq 特殊性质
121\sim 2 1010 AB
343\sim 4 10001000 10001000 B
585\sim 8 10410^4
9129\sim 12 10510^5 101810^{18} C
131413\sim 14 D
152015\sim 20
  • 特殊性质 A:保证所有 bib_i 均为 11

  • 特殊性质 B:保证所有 bib_i 均相等。

  • 特殊性质 C:保证 bib_i 单调不增。

  • 特殊性质 D:保证 aia_i 在数据范围内均匀随机生成。

本题输入数据较大,请选手自行选择较快的输入方式。