CF1988D.The Omnipotent Monster Killer

普及+/提高

通过率:0%

AC君温馨提醒

该题目为【codeforces】题库的题目,您提交的代码将被提交至codeforces进行远程评测,并由ACGO抓取测评结果后进行展示。由于远程测评的测评机由其他平台提供,我们无法保证该服务的稳定性,若提交后无反应,请等待一段时间后再进行重试。

题目描述

你,怪物猎人,想要消灭一群怪物。这些怪物分布在一棵有 nn 个顶点的树上。在编号为 ii(1≤i≤n1\le i\le n)的顶点上,有一个攻击力为 aia_i 的怪物。你将与这些怪物进行 1010010^{100} 轮战斗。

在每一轮中,依次发生以下事件:

  1. 所有存活的怪物会攻击你。你的生命值减少所有存活怪物攻击力的总和。
  2. 你可以选择一些(可以是全部、部分或不选)怪物将其击杀。被击杀的怪物之后将无法再攻击你。

有一个限制:在同一轮中,你不能同时击杀通过一条边直接相连的两个怪物。

如果你每轮都最优地选择要击杀的怪物,最终你生命值减少的最小值是多少?

输入格式

每个测试点包含多个测试用例。第一行包含测试用例个数 tt(1≤t≤1041 \le t \le 10^4)。接下来是每个测试用例的描述。

每个测试用例的第一行包含一个整数 nn(1≤n≤3⋅1051\le n\le 3\cdot 10^5)。

第二行包含 nn 个整数 a1,…,ana_1,\ldots,a_n(1≤ai≤10121\le a_i\le 10^{12})。

接下来的 n−1n-1 行,每行包含两个整数 x,yx,y(1≤x,y≤n1\le x,y\le n),表示树上的一条边,连接顶点 xx 和 yy。

保证所有测试用例中 nn 的总和不超过 3⋅1053\cdot 10^5。

输出格式

对于每个测试用例,输出一个整数,表示你生命值减少的最小可能值。

输入输出样例

  • 输入#1

    3
    1
    1000000000000
    5
    47 15 32 29 23
    1 2
    1 3
    2 4
    2 5
    7
    8 10 2 3 5 7 4
    1 2
    1 4
    3 2
    5 3
    6 2
    7 5

    输出#1

    1000000000000
    193
    57

说明/提示

在第一个测试用例中,一种最优的操作顺序如下:

  • 第一轮:首先受到编号为 11 的怪物的攻击,你的生命值减少 101210^{12}。然后击杀编号为 11 的怪物。
  • 第二轮到第 1010010^{100} 轮:所有怪物都已被击杀,不再发生任何事情。

总的生命值减少为 101210^{12}。

在第二个测试用例中,一种最优的操作顺序如下:

  • 第一轮:首先受到编号为 1,2,3,4,51,2,3,4,5 的怪物的攻击,你的生命值减少 47+15+32+29+23=14647+15+32+29+23=146。然后击杀编号为 1,4,51,4,5 的怪物。
  • 第二轮:首先受到编号为 2,32,3 的怪物的攻击,你的生命值减少 15+32=4715+32=47。然后击杀编号为 2,32,3 的怪物。
  • 第三轮到第 1010010^{100} 轮:所有怪物都已被击杀,不再发生任何事情。

总的生命值减少为 193193。

在第三个测试用例中,一种最优的操作顺序如下:

  • 第一轮:首先受到编号为 1,2,3,4,5,6,71,2,3,4,5,6,7 的怪物的攻击,你的生命值减少 8+10+2+3+5+7+4=398+10+2+3+5+7+4=39。然后击杀编号为 1,3,6,71,3,6,7 的怪物。
  • 第二轮:首先受到编号为 2,4,52,4,5 的怪物的攻击,你的生命值减少 10+3+5=1810+3+5=18。然后击杀编号为 2,4,52,4,5 的怪物。
  • 第三轮到第 1010010^{100} 轮:所有怪物都已被击杀,不再发生任何事情。

总的生命值减少为 5757。

由 ChatGPT 4.1 翻译

输入解题思路,AI测评打分。不知道怎么写?

首页