Responsive image

问题 2755 --小宇的嵌套段

2755: 小宇的嵌套段

时间限制: 1 Sec  内存限制: 128 MB
提交: 0  解决: 15
[提交][状态][讨论版][命题人:]

题目描述

数轴上有m个点,第i个点的坐标为整数xi,权重为整数wi。所有点的坐标都不同,点从1到m编号。
如果对于每一对 i,j (1≤i<j≤n) 条件 li< lj<rj<ri 满足。换句话说,第二段严格在第一段内部,第三段严格在第二段内部,依此类推。
对于给定的数字 n,找到一个嵌套段系统,使得:
每段的两端都是m个给定点之一;
用作线段末端的点的权重之和是最小的。
例如,设m=8。给定的点在图中标记,它们的权重用红色标记,它们的坐标用蓝色标记。制作一个包含三个嵌套段的系统:
第一段权重:1+1=2
第二段权重:10+(−1)=9
第三段权重:3+(−2)=1
系统中所有段的权重总和:2+9+1=12


输入描述

输入数据的第一行包含一个整数 t (1≤t≤1e4) — 输入测试用例的数量。
在每个测试用例之前写入一个空行。
每个测试用例的第一行包含两个正整数 n (1≤n≤1e5) 和 m (2⋅n≤m≤2⋅1e5)。
接下来的 m 行包含整数对 xi (−1e9≤xi≤1e9) 和 wi (−1e4≤wi≤1e4) — 点数 i (1≤i≤m) 的坐标和权重。所有 xi 都是不同的。
保证所有测试用例的 m 值之和不超过 2⋅1e5。

输出描述

对于每个测试用例,输出 n+2 行:在第1行中,输出组合系统的权重,在接下来的 n 行中,正好输出两个数字 — 作为第 i 段端点的点的索引 (1≤i≤n)。输出分段端点的顺序为先输出左侧终端节点的编号,然后输出右侧终端节点的编号,最后一行为空行。(编号为输入该点的次序,第一个点编号为1)
如果有几种方法可以制作具有最小权重的嵌套段系统,请输出其中任何一个。


样例输入

3

3 8
0 10
-2 1
4 10
11 20
7 -1
9 1
2 3
5 -2

3 6
-1 2
1 3
3 -1
2 4
4 0
8 2

2 5
5 -1
3 -2
1 0
-2 0
-5 -3

样例输出

12
2 6
1 5
7 8

10
1 6
2 5
4 3

-6
5 1
3 2

来源

[提交][状态]
ACM算法攻关部