传统题 1000ms 256MiB

我也要分叉吗

该比赛已结束,您无法在比赛模式下递交该题目。您可以点击“在题库中打开”以普通模式查看和递交本题。

题目描述

一棵有根树∗^* TT 的权值定义为:

f(T)=∑u∈Tdu×auf(T) = \sum_{u\in T} d_u \times a_u

其中 dud_u 为 uu 节点与根节点的最短路径边数,aua_u 表示节点的权值。

给定 nn 个节点和一个正整数 mm,每个节点都有一个正整数权值 aia_i。

现在需要你构造一棵 mm 叉树†^{\dagger} TT,满足以下条件:

  • 所有权值非 00 的节点互为兄弟关系,即不存在节点对 (i,j)(i, j),其中 i≠ji \ne j,且 ai,aj≠0a_i,a_j \ne 0,满足 ii 是 jj 的祖先‡^{\ddagger},或 jj 是 ii 的祖先‡^{\ddagger}。

  • 树的权值 f(T)f(T) 在所有满足上一个条件的 mm 叉树的权值中最小。

由于仅使用给定的 nn 个节点显然无法满足,因此你可以添加最多 nn 个权值为 00 的节点,新添加的节点编号从 n+1n + 1 开始,依次增加。


∗^*一颗包含 nn 个节点的树是指一个具有 nn 个节点、n−1n-1 条边的无向连通图。有根树是在树中指定一个特殊的顶点作为根的树。

†^{\dagger}mm 叉树指的是每个节点最多有 mm 个子节点的有根树。

‡^{\ddagger}节点 uu 的祖先指所有满足以下条件的顶点 vv:v≠uv \ne u,并且从根节点到 uu 的最短路径经过 vv。

输入描述

有多组测试用例。

第一行包含一个正整数 tt(1≤t≤51\le t\le 5),表示测试用例组数。

对每组测试用例:

第一行包含两个正整数 nn,mm(2≤m≤n≤1052\le m\le n \le 10^5),分别表示节点个数、树的叉数。

第二行包含 nn 个正整数 a1,a2,…,ana_1, a_2, \dots, a_n(1≤ai≤1091\le a_i \le 10^9)。

保证所有测试用例中 nn 之和不超过 10510^5。

输出描述

对每组测试用例:

第一行输出三个正整数 f(T),k,sf(T),k,s,分别表示树的权值,添加的权值为 00 的节点个数,根节点编号。

接下来输出 n+k−1n + k - 1 行,每行包含两个正整数 u,vu, v 表示节点 uu 和 vv 之间有一条边。

若有多种合法方案,输出任意一种即可。

样例

1
5 3
1 2 3 4 5
21 2 6
6 4
6 5
6 7
7 1
7 2
7 3

数据范围

共有 3030 组测试点。

对于前 55 组测试点 nn 之和不超过 1010。

对于第 66 到 1515 组测试点 nn 之和不超过 10410^4。

对于第 1616 到 3030 组测试点 nn 之和不超过 10510^5。

2026 TGU & HPU Joint GPLT Group Contest

未参加
状态
已结束
规则
IOI
题目
15
开始于
2026-3-15 13:30
结束于
2026-3-15 16:30
持续时间
3 小时
主持人
参赛人数
66