#CF2018E2. 复杂线段(困难版)
复杂线段(困难版)
E2. 复杂线段(困难版)
每个测试点时间限制: 秒
内存限制: 兆字节
音乐:Ken Arai - COMPLEX
本题为困难版本。在此版本中, 的限制和时间限制均更高。只有当两个版本均通过后,你才能进行 Hack 操作。
一组(闭)线段被称为复杂的,如果它可以被划分为若干个子集,使得:
- 所有子集的大小相同;
- 两条线段相交 当且仅当 它们属于同一个子集。
现在给定 条线段 。
请找出这些线段中一个复杂的子集的最大可能大小。
输入格式
每个测试点包含多个测试用例。
第一行包含一个整数 (),表示测试用例的数量。
接下来每个测试用例的描述如下:
- 第一行包含一个整数 (),表示线段的数量。
- 第二行包含 个整数 (),表示线段的左端点。
- 第三行包含 个整数 (),表示线段的右端点。
保证所有测试用例的 之和不超过 。
输出格式
对于每个测试用例,输出一个整数:这些线段中一个复杂的子集的最大可能大小。
样例
输入:
3
3
1 2 3
5 4 6
5
1 2 3 6 8
5 4 7 9 10
5
3 1 4 1 5
7 2 6 5 10
输出:
3
4
4
样例解释
- 在第一个测试用例中,任意两条线段都相交,因此最优方案是将所有 条线段放在同一个组中。
- 在第二个测试用例中,不存在将全部 条线段进行有效划分的方案。一个包含 条线段的有效划分是:。
- 在第三个测试用例中,最优方案是只排除第二条线段,将剩下的 条线段放在同一个组中。