CF1621B Integers Shop
题目描述
整数商店出售 $n$ 个区间。第 $i$ 个区间包含所有从 $l_i$ 到 $r_i$ 的整数,售价为 $c_i$ 个硬币。
明天 Vasya 将前往这家商店购买一些区间。他将获得所有出现在所购区间中的整数。购买的总花费是所选区间价格之和。
购物后,Vasya 还会额外获得一些整数作为赠品。整数 $x$ 会作为赠品被赠送给 Vasya,当且仅当满足以下所有条件:
- Vasya 没有购买 $x$。
- Vasya 购买了一个小于 $x$ 的整数 $l$。
- Vasya 购买了一个大于 $x$ 的整数 $r$。
每个整数 $x$ 只能作为赠品获得一次,因此赠品不会重复。
例如,如果 Vasya 购买区间 $[2, 4]$,花费 $20$ 个硬币,以及区间 $[7, 8]$,花费 $22$ 个硬币,则他共花费 $42$ 个硬币,获得整数 $2, 3, 4, 7, 8$。他还会额外获得整数 $5$ 和 $6$ 作为赠品。
由于技术原因,明天商店只会提供前 $s$ 个区间(即区间 $[l_1, r_1], [l_2, r_2], \ldots, [l_s, r_s]$)。
Vasya 希望获得(无论是购买还是赠品)尽可能多的整数。如果有多种方式可以实现,他会选择花费最少的方式。
对于每个 $s$ 从 $1$ 到 $n$,求出如果只提供前 $s$ 个区间,Vasya 至少需要花费多少硬币。
输入格式
第一行包含一个整数 $t$($1 \leq t \leq 1000$),表示测试用例数量。
每个测试用例的第一行包含一个整数 $n$($1 \leq n \leq 10^5$),表示商店中的区间数量。
接下来的 $n$ 行,每行包含三个整数 $l_i$、$r_i$、$c_i$($1 \leq l_i \leq r_i \leq 10^9, 1 \leq c_i \leq 10^9$),表示第 $i$ 个区间的左右端点和价格。
保证所有测试用例中 $n$ 的总和不超过 $2 \cdot 10^5$。
输出格式
对于每个测试用例,输出 $n$ 个整数:第 $s$ 个($1 \leq s \leq n$)表示如果只提供前 $s$ 个区间,Vasya 至少需要花费多少硬币。
说明/提示
在第一个测试用例中,如果 $s=1$,Vasya 只能购买区间 $[2, 4]$,花费 $20$ 个硬币,获得 $3$ 个整数。
在 $s=2$ 的情况下,获得 $7$ 个整数并花费 $42$ 个硬币的方法已在题目描述中给出。
在第二个测试用例中,注意商店中可能会有相同的区间。
由 ChatGPT 4.1 翻译