luogu#P9077. [PA2018] Poddrzewo

[PA2018] Poddrzewo

题目描述

题目译自 PA 2018 Runda 1 Poddrzewo

给定一个长度为 nn 的序列 aa

构造一个结点数为 kk 的无根树,结点编号分别为 1k1 \cdots k。该树第 ii 个结点的度数为 aia_i

有可能无解,你可以进行如下操作来使其有解:

  1. 修改序列中第 ii 个数。
  2. 删除序列中第 ii 个数。
  3. 交换序列中第 i,ji,j 个数。

可以证明,进行有限次操作后一定有解。

你的任务是 最小化操作 11 使用的次数

输入格式

一行一个整数 nn,表示序列 aa 的长度。

下一行有 nn 个整数,第 ii 个整数表示 aia_i

输出格式

第一行一个整数 xx ,表示操作 11 使用次数最小值。

第二行一个整数 k (2kn)k\ (2 \le k \le n),表示你构造的树结点数目。

接下来 k1k-1 行,每行两个数 u,v (1u,vk)u,v\ (1 \le u, v \le k),表示连接第 u,vu,v 个结点。

多解输出任意解。

6
2 1 5 3 1 1
0
5
1 2
2 3
1 4
1 5
3
1 2 2
1
3
1 2
2 3

提示

样例 1 解释

我们可以删除第 33 个数字,然后更改元素的顺序。

得到最后的序列为 (3,2,1,1,1)(3,2,1,1,1)

这是构造的树的示意图:


样例 2 解释

我们可以修改第 33 个数字,得到最后的序列为 (1,2,1)(1,2,1)。可以证明,操作 11 至少需要使用 11 次。

这是构造的树的示意图:


数据范围

本题采用捆绑测试

对于 100%100\% 的数据:

  • 2n1062 \le n \le 10^6
  • 1ain11 \le a_i \le n-1

保证存在至少一个子任务,其中操作 11 使用次数最小值为 00