CF2129A.Double Perspective
普及-
通过率:0%
AC君温馨提醒
该题目为【codeforces】题库的题目,您提交的代码将被提交至codeforces进行远程评测,并由ACGO抓取测评结果后进行展示。由于远程测评的测评机由其他平台提供,我们无法保证该服务的稳定性,若提交后无反应,请等待一段时间后再进行重试。
题目描述
给定一组区间对 S={(a1,b1),(a2,b2),…,(am,bm)},其中对于所有 1≤i≤m,都有 ai<bi,我们定义 f(S) 和 g(S) 如下:
- 将每个 (ai,bi) 视为数轴上的一个区间,f(S) 表示这些区间的并的长度。形式化地说,f(S) 是满足存在某个 i(1≤i≤m)使得 [x,x+1]⊆[ai,bi] 的整数 x 的个数。
- 将每个 (ai,bi) 视为图中的一条无向边,g(S) 表示在至少包含 3 条边的简单环上的点的个数。形式化地说,g(S) 是满足存在一条路径 x1→x2→…→xk→x1(k≥3,且 x1,x2,…,xk 两两不同)的点 x1 的个数。
例如,S={(1,2),(2,4),(1,4),(4,5),(6,7)},可以得到 f(S)=5,g(S)=3。
现在给定 n 个不同的区间对。你的任务是从中选择一个子集 S′,使得 f(S′)−g(S′) 最大。你需要输出被选中的区间对的下标。
输入格式
每组测试数据包含多组测试用例。第一行包含一个整数 t(1≤t≤104),表示测试用例的组数。
每组测试用例的第一行包含一个整数 n(1≤n≤3⋅103)。
接下来的 n 行,每行包含两个整数 ai 和 bi(1≤ai<bi≤2n),表示一个区间对。
保证同一测试用例内所有区间对均不同。
保证所有测试用例的 n2 之和不超过 9⋅106。
输出格式
对于每组测试用例,第一行输出一个整数 k(0≤k≤n),表示选中的区间对的数量。
下一行输出 k 个不同的整数 i1,i2,…,ik(1≤i1,i2,…,ik≤n),表示被选中的区间对的下标。注意下标不能重复。
输入输出样例
输入#1
2 1 1 2 4 1 2 2 3 1 3 3 5
输出#1
1 1 3 1 2 4
说明/提示
在第一个测试用例中,如果不选任何区间对(即 S′=∅),则 f(S′)−g(S′)=0−0=0。如果只选第一个区间对,则 f(S′)−g(S′)=1−0=1。因此最优解是只选第一个区间对。
由 ChatGPT 4.1 翻译
输入解题思路,AI测评打分。不知道怎么写?