QOJ.ac

QOJ

Limite de temps : 7 s Limite de mémoire : 256 MB Points totaux : 10

#1382. 征服之线 [A]

Statistiques

Bajtur 国王,Bitocja 的统治者,正梦见征服 Bitocja。在他的梦中,就像在现实世界中一样,他距离击败对手还很遥远。因此,他正在思考能做些什么来削弱敌国……

在他的梦中,Bitocja 由 $n$ 个城市(编号为 $1$ 到 $n$)组成,这些城市通过 $n-1$ 条双向道路连接,使得任意两个城市之间都可以通过这些道路到达。换句话说,Bitocja 的地图构成了一棵树。然而,Bajtur 并不完全记得 Bitocja 的道路网络……因此,他的大脑生成了一个随机的道路网络。

国王得出的结论是,强行将 Bitocja 分割成 $k$ 个较小的国家是一个好主意。所谓分割,Bajtur 指的是秘密摧毁恰好 $k-1$ 条道路,这将迫使 Bitocja 分裂成 $k$ 个国家,这些国家是删除所选边后形成的图的连通分量。

然而,对国王来说,仅仅摧毁任意 $k-1$ 条道路是不够的。Bitocja 的每个城市都有一个军事系数 $a_i$——这也是由 Bajtur 的大脑随机生成的。Bajtur 知道,一个国家的军事实力越强,对 Bajtocja 的威胁就越大。具体来说:如果某个国家中各城市军事系数之和为 $S$,则该国家造成的威胁等于 $S^2$。Bajtocja 的总威胁等于所有 $k$ 个国家造成的威胁之和。

现在,Bajtur 向你——他梦中的(字面意义上的!)程序员——求助。请帮他计算,在分割成 $k$ 个国家后,Bitocja 可能产生的最小总威胁是多少。由于 Bajtur 尚未决定参数 $k$ 的值,请计算所有 $k$ 从 $1$ 到 $n$ 的结果。

输入格式

输入的第一行包含一个整数 $t$ ($1 \le t \le 10$),表示 Bajtur 的梦(测试用例)的数量。接下来是各个测试用例的描述;每个测试用例的格式相同。

每个测试用例的第一行包含一个整数 $n$ ($2 \le n \le 300$)。 第二行包含 $n$ 个整数 $a_1, a_2, \dots, a_n$ ($1 \le a_i \le 10^6$)。 接下来的 $n-1$ 行描述了 Bitocja 的道路;第 $i$ 行包含两个整数 $b_i$ 和 $c_i$ ($1 \le b_i, c_i \le n$),表示连接编号为 $b_i$ 和 $c_i$ 的城市的道路。每个测试用例描述的图都是一棵树。

Bajtur 通过手动选择 $t$ ($1 \le t \le 10$)、整数区间 $[n_{\min}, n_{\max}]$ ($2 \le n_{\min} \le n_{\max} \le 300$) 以及 $a_{\max}$ ($1 \le a_{\max} \le 10^6$) 来生成测试数据。随后,每个测试用例均由他按以下方式独立生成: 城市数量 $n$ 从区间 $[n_{\min}, n_{\max}]$ 中均匀随机选择。 每个数字 $a_1, a_2, \dots, a_n$ 均从区间 $[1, a_{\max}]$ 中独立且均匀随机选择。 * 生成一个自然数序列 $(p_1, p_2, \dots, p_{n-2})$;序列中的每个元素均从区间 $[1, n]$ 中独立且均匀随机选择。Bajtur 将其连接网络视为一棵 Prüfer 编码为 $(p_1, p_2, \dots, p_{n-2})$ 的树。

你可以在 SIO2 系统的“文件”部分找到该任务的示例测试生成器。生成器依次接收以下输入:生成器种子以及数字 $t, n_{\min}, n_{\max}, a_{\max}$。该任务的所有测试都将使用等效代码生成(即使用与编译器实现无关的独立伪随机数库)。

为了确保测试的随机性,每个测试的 $t, n_{\min}, n_{\max}, a_{\max}$ 值均为手动选择,且生成器种子是随机选择的。

输出格式

输出应包含 $t$ 行,描述后续测试用例的答案。每个测试用例的答案应位于单独的一行中,并包含 $n$ 个整数(其中 $n$ 是给定测试用例中的城市数量);其中第 $k$ 个数字应表示分割成 $k$ 个国家后可能产生的最小威胁。

样例

输入 1

2
7
9 1 4 2 6 4 7
1 7
6 4
2 3
5 7
3 4
5 3
5
4 8 2 3 1
4 3
3 1
4 2
5 1

输出 1

1089 545 371 287 227 211 203
324 164 114 102 94

说明 1

上述测试是使用 SIO2 系统“文件”部分中提供的代码通过试运行生成的,种子为 $8\,122\,020$,参数为 $t = 2, n_{\min} = 5, n_{\max} = 7, a_{\max} = 10$。

对于第一个测试用例,输出的第一个数字是 $(9+1+4+2+6+4+7)^2 = 1089$,表示未分割的 Bitocja 造成的总威胁。输出的第二个数字对应于摧毁连接城市 $5$ 和 $7$ 的道路后的总威胁;在这种情况下,威胁为 $(9 + 7)^2 + (1 + 4 + 2 + 6 + 4)^2 = 545$。

Discussions

About Discussions

The discussion section is only for posting: General Discussions (problem-solving strategies, alternative approaches), and Off-topic conversations.

This is NOT for reporting issues! If you want to report bugs or errors, please use the Issues section below.

Open Discussions 0
No discussions in this category.

Issues

About Issues

If you find any issues with the problem (statement, scoring, time/memory limits, test cases, etc.), you may submit an issue here. A problem moderator will review your issue.

Guidelines:

  1. This is not a place to publish discussions, editorials, or requests to debug your code. Issues are only visible to you and problem moderators.
  2. Do not submit duplicated issues.
  3. Issues must be filed in English or Chinese only.
Active Issues 0
No issues in this category.
Closed/Resolved Issues 0
No issues in this category.