请升级 HydroOJ 到 4.16.0 以上版本以正常使用此插件功能。

#60. 装甲补给

装甲补给

题目描述

小 R 指挥的装甲军团的海上补给线被敌军截断了,只能依靠稀少的空投补给来维持部队战斗力。

当前的战线呈一棵有 nn 个节点的树的形状,树上每一个节点都是重要的战略要点,第 ii 个节点的初始补给匮乏度为 aia_i。若在一次空投补给后第 ii 个节点得到了 bib_i 的补给,则定义战况恶化度为 i=1nmax(0,aibi)2\sum_{i=1}^n{\max(0,a_i-b_i)^2}

然而战局并非一成不变的,因此小 R 给你了 qq 次询问。

每次询问可能是以下两种类型之一:

1.战局发生了变化,点 xx 的补给匮乏度 axa_x 变为了 vv

2.一队补给机将携带 mm 的补给由 uu 沿树上最短路径飞到 vv,可以向经过的节点空投总和不超过 mm 的补给,你需要求出这次空投后的最小战况恶化度。(注意,这和后续询问是独立的,即不会对 aa 数组造成修改)

输入格式

第一行两个正整数 n,qn,q, 表示节点个数与询问个数。

接下来 n1n−1 行,每行两个正整数 u,vu,v 表示树的一条边。保证不会重复给出同一条边。

接下来一行 nn 个非负整数 a1,a2,,ana_1, a_2, \ldots, a_n​,表示每个节点的初始补给匮乏度。

接下来 qq 行每行可能为 1 u b2 u v m 两种形式之一,含义如上所述。

输出格式

对于每一个第二类询问,输出一行一个数代表最小战况恶化度。

输入输出样例 #1

输入 #1

3 3
1 2
1 3
1 4 3
2 2 3 5
1 3 4
2 2 3 5

输出 #1

3
6

输入输出样例 #2

输入 #2

见下发文件

输出 #2

见下发文件

说明/提示

2500ms,512MB

对于所有数据,满足 $n,q \leq 10^5, 0 \leq a_i,v \leq 10^9, 0 \leq m \leq 10^{14}, 1 \leq u,v \leq n$。

Subtask 1(15pts):\text{Subtask 1(15pts)}: n,q,m1000n,q,m \leq 1000

Subtask 2(15pts):\text{Subtask 2(15pts)}: n,q1000n,q \leq 1000

Subtask 3(10pts):\text{Subtask 3(10pts)}: 保证对于任意 1i<n1 \leq i < n,存在边 (i,i+1)(i,i+1)

Subtask 4(15pts):\text{Subtask 4(15pts)}: n,q20000n,q \leq 20000

Subtask 5(15pts):\text{Subtask 5(15pts)}: n,q50000n,q \leq 50000

Subtask 6(30pts):\text{Subtask 6(30pts)}: 无特殊限制。

友情提示:请多看一眼数据范围。

Download

样例数据