loj#P574. 「LibreOJ NOI Round #2」黄金矿工

    ID: 15278 传统题 2000ms 512MiB 尝试: 8 已通过: 1 难度: 10 上传者: 标签>费用流Link-Cut Tree线段树树链剖分可并堆线段树分治LibreOJ NOI Round

「LibreOJ NOI Round #2」黄金矿工

题目描述

你是一处金矿的主人,并且有若干矿工要来这里挖黄金。

这处宝藏有 nn 个可能的藏宝点,这 nn 个点构成了一棵有根树的结构。

树上的每条边都是有向的,从父亲指向儿子,并且有个正整数权值 cic_i,表示每有一个矿工从这条边走过,你会收取 cic_i 的过路费。

每个矿工 xx 会从某一个藏宝点 uu 出发,并且有一个正整数权值 PxP_x,表示如果你允许他来挖宝,将会获得 PxP_x 的入场费。

某个藏宝点 uu 可能还会出现一块权值为 QyQ_y 黄金,表示如果有矿工挖取了这个黄金,你会从中提走 QyQ_y 的利润。

一个矿工 xx 挖取一块黄金 yy 的收益是 Px+Qy+eceP_x+Q_y+\sum_{e}{c_e},其中边 ee 在人 xx 和黄金 yy 的路径上。

注意一个矿工只能挖取一块黄金,一块黄金也只能被一个矿工挖取。一个矿工只能挖取他沿着树上有向边能到的黄金,同一条边在同一个挖取方案中可以被多个人经过

一开始既没有黄金也没有矿工。

我们需要支持 qq 次操作,每次操作有两种类型:

  • 11 uu vv:表示在点 uu 上新出现了一个权为 vv 的矿工。
  • 22 uu vv:表示在点 uu 上新出现了一块权为 vv 的黄金。

你需要在每次操作后算出,如果让某些矿工去挖取黄金,那么可能的最大收益是多少。

注意你并不需要最大化挖到黄金的人数量

输入格式

从标准输入读入数据。

第一行两个整数 nnqq,表示树的节点和操作数。

接下来 n1n-1 行,每行三个正整数 u,v,cu,v,c,表示有一条权为 cc 的边从点 uu 指向点 vv

接下来 qq 行每行描述一次操作。

输出格式

输出到标准输出。

对于每次操作,输出一个整数表示这次操作执行后的答案。

5 5
1 2 1
1 3 1
1 4 1
4 5 1
1 3 5
2 3 1
1 4 8
1 1 1
2 1 10
0
6
6
6
17

数据范围与提示

对于所有数据,保证 n,q105n,q \le 10^5,并且所有树边的权均为不超过 10310^3 的正整数,所有矿工和黄金的权均为不超过 10810^8 的正整数。

测试点 n=n= q=q= 特殊性质
11 88 C2
22 300300
3,43, 4 4×1034 \times 10^3 41034 * 10^3
5105 \sim 10 103 10^3 5×1045 \times 10^4 C1
111311 \sim 13 C2
14,1514,15 10510^5 A1
16,1716,17 B1
18,1918,19 C1
202420 \sim 24 C2
2525 10510^5

表格中的特殊性质

  • A:第 ii 条边从 ii 指向 i+1i+1
  • B:第 ii 条边从 i+12\lfloor \frac{i+1}{2} \rfloor 指向 i+1i+1
  • C:在树的形态上无特殊约束
  • 1:保证所有 11 操作都在 22 操作之后
  • 2:在操作类型上无特殊约束