CF1515I Phoenix and Diamonds
题目描述
Phoenix 想知道从珠宝店抢劫钻石是什么感觉!
这里有 $n$ 种类型的钻石。第 $i$ 种类型的钻石重量为 $w_i$,价值为 $v_i$。商店最初有 $a_i$ 颗第 $i$ 种类型的钻石。
在接下来的 $q$ 天里,每天会发生以下事件之一:
1. 收到一批新的 $k_i$ 颗类型为 $d_i$ 的钻石。
2. 商店卖出 $k_i$ 颗类型为 $d_i$ 的钻石。
3. Phoenix 想知道,如果他使用一个容量不超过 $c_i$ 的袋子抢劫商店,按照贪心策略(优先选取价值最大的钻石,若价值相同则选重量最小的,若仍有多个则任选其一)能带走多少总价值?注意类型 $3$ 的查询不会实际影响商店中的钻石数量。
输入格式
第一行包含两个整数 $n$ 和 $q$($1 \le n \le 2 \cdot 10^5$;$1 \le q \le 10^5$)——分别表示钻石类型数和天数。
接下来 $n$ 行描述每种类型的钻石。第 $i$ 行包含三个整数 $a_i$、$w_i$、$v_i$($0 \le a_i \le 10^5$;$1 \le w_i, v_i \le 10^5$)——分别表示初始数量、重量和价值。
接下来 $q$ 行描述查询。每行第一个整数为 $t$($1 \le t \le 3$)——查询类型:
- 若 $t=1$,后接两个整数 $k_i$、$d_i$($1 \le k_i \le 10^5$;$1 \le d_i \le n$),表示类型 $d_i$ 的钻石新增 $k_i$ 颗。
- 若 $t=2$,后接两个整数 $k_i$、$d_i$($1 \le k_i \le 10^5$;$1 \le d_i \le n$),表示类型 $d_i$ 的钻石卖出 $k_i$ 颗(保证库存足够)。
- 若 $t=3$,后接一个整数 $c_i$($1 \le c_i \le 10^{18}$),表示袋子的容量。
保证至少存在一个类型 $3$ 的查询。
输出格式
对每个类型 $3$ 的查询,输出答案。
说明/提示
对于第一个类型 $3$ 的查询,Phoenix 可以带走 $2$ 颗类型 $1$ 的钻石,总重量 $6$,总价值 $8$。
对于第二个类型 $3$ 的查询,Phoenix 会先带走 $3$ 颗类型 $3$ 的钻石,再带走 $1$ 颗类型 $1$ 的钻石,总重量 $9$,总价值 $16$。注意类型 $3$ 的钻石因价值相同但重量更小而优先被选取。
对于最后一个类型 $3$ 的查询,Phoenix 可以带走所有钻石,总价值 $13$。
翻译由 DeepSeek R1 完成