CF2152H2.Victorious Coloring (Hard Version)

NOI/NOI+/CTSC

通过率:0%

AC君温馨提醒

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

题目描述

这是该问题的困难版本。该版本与其他版本的区别在于 q≤250 000q \le 250\,000。只有你解决了所有版本后,才可以对本题进行 hack。

给定一棵有 nn 个顶点的树,每个顶点编号为 11 到 nn。每条边都被赋予一个正整数权值 w1,w2,…,wn−1w_1, w_2, \ldots, w_{n-1}。

一种“胜利染色”指的是将所有顶点染成红色或黄色两种颜色,其中必须至少有一个顶点染成红色(这象征着队伍 T1 的象征)。

设对每个顶点分配了一个非负整数权值 x1,x2,…,xnx_1, x_2, \ldots, x_n。胜利染色的代价被定义为:所有红色顶点权值之和,加上所有连接不同颜色顶点(即红色和黄色)之间的边的权值之和。定义 f([x1,x2,…,xn])f([x_1, x_2, \ldots, x_n]) 为所有胜利染色下可能的最小代价。

Gumayusi 考虑了在给定序列 x1,x2,…,xnx_1, x_2, \ldots, x_n 时计算 f([x1,x2,…,xn])f([x_1, x_2, \ldots, x_n]) 的问题。但对他而言这个问题太简单了,于是他改进了这个问题:给定一个整数 ll,求一组非负整数顶点权值 [x1,x2,…,xn][x_1, x_2, \ldots, x_n],使得 f([x1,x2,…,xn])≥lf([x_1, x_2, \ldots, x_n]) \ge l 且顶点权值总和 ∑i=1nxi\sum_{i=1}^n x_i 最小。

Gumayusi 感到满意,但还存在一个严重问题——这个问题没有任何询问,对于任何不是“坏的”题目来说是不可接受的。因此,他给这个问题增加了询问。每给定一个 ll 作为询问,你需要输出相应的最小总顶点权值。

输入格式

每个测试用例包含多组数据。第一行给出测试用例数量 tt(1≤t≤1041 \le t \le 10^4)。每个测试用例描述如下。

第一行一个整数 nn(2≤n≤250 0002 \le n \le 250\,000)——顶点数。

接下来的 n−1n-1 行描述每条边,每行三个整数 uiu_i、viv_i、wiw_i(1≤ui,vi≤n,1≤wi≤109,ui≠vi1 \le u_i, v_i \leq n, 1 \le w_i \le 10^9, u_i \neq v_i),表示从 uiu_i 到 viv_i 的边,权值为 wiw_i。

保证所有边构成一棵树。

接下来一行一个整数 qq(1≤q≤250 0001 \le q \le 250\,000)——询问次数。

接下来的 qq 行,每行一个整数 lil_i(1≤li≤1091 \leq l_i \leq 10^9),为第 ii 个询问参数。保证所有测试用例中 nn 的总和不超过 250 000250\,000。

保证所有测试用例中 qq 的总和不超过 250 000250\,000。

输出格式

对于每个测试用例的每个询问,按行输出答案。

输入输出样例

  • 输入#1

    2
    5
    3 5 10
    2 3 4
    3 1 10
    3 4 2
    5
    28
    32
    11
    17
    23
    2
    1 2 3
    1
    1

    输出#1

    88
    108
    21
    42
    66
    1

说明/提示

下面为第一个测试用例每个查询的最优赋值示例:

  • [18,24,2,26,18][18,24,2,26,18]
  • [22,28,6,30,22][22,28,6,30,22]
  • [4,7,0,9,1][4,7,0,9,1]
  • [7,13,0,15,7][7,13,0,15,7]
  • [13,19,0,21,13][13,19,0,21,13]

由 ChatGPT 5 翻译

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

首页