AT_oupc2023_day1_p Score for Cutting Graph
题目描述
对于一个无向图 $G'$,每个顶点上写有一个正整数,定义 $G'$ 的分数如下:
- 对于 $G'$ 的每个连通分量,计算该连通分量中所有顶点上正整数的乘积,并将这些乘积累加起来,得到总分数。
给定一个只包含正整数的长度为 $N$ 的序列 $A = (A_1, A_2, \ldots, A_N)$ 和一个正整数 $M$。现在需要构造一个编号分别为 $1$ 到 $N$ 的 $N$ 个顶点、$N-1$ 条边的简单且连通的无向图 $G$,使得满足下列条件:
- 对于 $G$ 的每个顶点 $i$($1 \leq i \leq N$),点 $i$ 上写有 $A_i$。
- 从 $G$ 删除至多一条边后得到的所有 $N$ 个图,它们的分数总和不超过 $M$。
有 $T$ 个测试用例,请分别判断每个测试用例是否存在符合条件的 $G$。如果存在,请给出构造方案。
输入格式
输入按如下格式从标准输入读入:
> $T$ $\mathrm{case}_1$ $\vdots$ $\mathrm{case}_T$
每个测试用例格式如下:
> $N$ $M$ $A_1$ $A_2$ $\ldots$ $A_N$
输出格式
对于第 $k$ 个测试用例,输出该用例的答案。如果无法使分数总和不超过 $M$,输出 `No`。否则,第一行输出 `Yes`,后面 $N-1$ 行输出 $G$ 的边的构造方式,格式如下:
> $s_1$ $t_1$
> $s_2$ $t_2$
> $\vdots$
> $s_{N-1}$ $t_{N-1}$
其中 $s_j, t_j$ 表示 $G$ 的第 $j$ 条边(连接顶点 $s_j$ 与 $t_j$)。
如果存在多种方案,输出任意一种均可。
说明/提示
## 子任务
1. (1 分)$N \leq 7$
2. (99 分)无额外约束
### 样例解释 1
第 1 个测试用例及其输出结果如下所示,例如:
- 不删除任何边时,分数为 $(1 \times 2 \times 3 \times 4) = 24$。
- 删除第 1 条边时,分数为 $(2) + (1 \times 3 \times 4) = 14$。
- 删除第 2 条边时,分数为 $(3) + (1 \times 2 \times 4) = 11$。
- 删除第 3 条边时,分数为 $(4) + (1 \times 2 \times 3) = 10$。
分数总和为 $59$。也存在分数总和不超过 $60$ 的其它 $G$,输出任意一种即可。
对于第 2 个测试用例,无法使分数总和不超过 $24$,因此输出 `No`。
此样例满足子任务 1 的约束。
### 样例解释 2
此样例不满足子任务 1 的约束。
### 数据范围
- $1 \leq T \leq 5$
- $2 \leq N \leq 200,\!000$
- $1 \leq M \leq 10^{18}$
- $1 \leq A_i \leq 10^{18}$
- 所有测试用例中 $N$ 的总和不超过 $200,\!000$
- 输入均为整数。
由 ChatGPT 5 翻译