CF2129A.Double Perspective

普及-

通过率:0%

AC君温馨提醒

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

题目描述

给定一组区间对 S={(a1,b1),(a2,b2),…,(am,bm)}S = \{(a_1, b_1), (a_2, b_2), \ldots, (a_m, b_m)\},其中对于所有 1≤i≤m1 \le i \le m,都有 ai<bia_i < b_i,我们定义 f(S)f(S) 和 g(S)g(S) 如下:

  • 将每个 (ai,bi)(a_i, b_i) 视为数轴上的一个区间,f(S)f(S) 表示这些区间的并的长度。形式化地说,f(S)f(S) 是满足存在某个 ii(1≤i≤m1 \leq i \leq m)使得 [x,x+1]⊆[ai,bi][x, x+1] \subseteq [a_i, b_i] 的整数 xx 的个数。
  • 将每个 (ai,bi)(a_i, b_i) 视为图中的一条无向边,g(S)g(S) 表示在至少包含 33 条边的简单环上的点的个数。形式化地说,g(S)g(S) 是满足存在一条路径 x1→x2→…→xk→x1x_1 \to x_2 \to \ldots \to x_k \to x_1(k≥3k \geq 3,且 x1,x2,…,xkx_1, x_2, \ldots, x_k 两两不同)的点 x1x_1 的个数。

例如,S={(1,2),(2,4),(1,4),(4,5),(6,7)}S = \{(1,2), (2,4), (1,4), (4,5),(6,7)\},可以得到 f(S)=5f(S) = 5,g(S)=3g(S) = 3。

现在给定 nn 个不同的区间对。你的任务是从中选择一个子集 S′S',使得 f(S′)−g(S′)f(S') - g(S') 最大。你需要输出被选中的区间对的下标。

输入格式

每组测试数据包含多组测试用例。第一行包含一个整数 tt(1≤t≤1041 \le t \le 10^4),表示测试用例的组数。

每组测试用例的第一行包含一个整数 nn(1≤n≤3⋅1031 \le n \le 3 \cdot 10^3)。

接下来的 nn 行,每行包含两个整数 aia_i 和 bib_i(1≤ai<bi≤2n1 \le a_i < b_i \le 2n),表示一个区间对。

保证同一测试用例内所有区间对均不同。

保证所有测试用例的 n2n^2 之和不超过 9⋅1069 \cdot 10^6。

输出格式

对于每组测试用例,第一行输出一个整数 kk(0≤k≤n0 \le k \le n),表示选中的区间对的数量。

下一行输出 kk 个不同的整数 i1,i2,…,iki_1, i_2, \ldots, i_k(1≤i1,i2,…,ik≤n1 \le i_1, i_2, \ldots, i_k \le n),表示被选中的区间对的下标。注意下标不能重复。

输入输出样例

  • 输入#1

    2
    1
    1 2
    4
    1 2
    2 3
    1 3
    3 5

    输出#1

    1
    1
    3
    1 2 4

说明/提示

在第一个测试用例中,如果不选任何区间对(即 S′=∅S'=\varnothing),则 f(S′)−g(S′)=0−0=0f(S')-g(S')=0-0=0。如果只选第一个区间对,则 f(S′)−g(S′)=1−0=1f(S')-g(S')=1-0=1。因此最优解是只选第一个区间对。

由 ChatGPT 4.1 翻译

输入解题思路,AI测评打分。不知道怎么写?

首页