CF1621B.Integers Shop

传统题 时间 2000 ms 内存 256 MiB 10 尝试 1 已通过 1 标签

Integers Shop

CF1621B · Integers Shop

  • 难度:1500
  • 标签:data structures、greedy、implementation
  • 链接:https://codeforces.com/problemset/problem/1621/B
  • 时间限制:2 seconds 内存限制:256 megabytes
  • 出现位置:Day03-贪心证明-排序-交换论证/选做

中文题意

整数商店出售 nn 个区间。第 ii 个区间包含从 lil_irir_i 的所有整数,售价为 cic_i 枚硬币。

明天 Vasya 会去商店买一些区间。他将得到所买区间中至少出现在一个区间里的所有整数。购买的总花费是所买所有区间的费用之和。

购物之后,Vasya 还会额外获得一些整数作为赠品。当且仅当满足以下所有条件时,他会把整数 xx 作为赠品获得:

  • Vasya 没有买到 xx
  • Vasya 买到了某个小于 xx 的整数 ll
  • Vasya 买到了某个大于 xx 的整数 rr

Vasya 只会把整数 xx 作为赠品获得一次,因此获赠后不会出现重复的整数。

例如,若 Vasya 以 2020 枚硬币买下区间 [2,4][2, 4]、以 2222 枚硬币买下区间 [7,8][7, 8],他共花费 4242 枚硬币,从这些区间得到整数 2,3,4,7,82, 3, 4, 7, 8,还会得到赠品 5566

由于技术原因,明天商店里只有前 ss 个区间(即区间 [l1,r1],[l2,r2],,[ls,rs][l_1, r_1], [l_2, r_2], \ldots, [l_s, r_s])可用。

Vasya 想(通过购买或获赠)得到尽可能多的整数。若有多种方式可以做到,他会选择最便宜的一种。

对每个从 11nnss,求出如果只有前 ss 个区间可用,Vasya 将花费多少枚硬币。

输入格式(中文)

本题包含 tt 组测试数据。第一行为单个整数 tt1t10001 \leq t \leq 1000)——测试数据组数。

每组数据第一行为单个整数 nn1n1051 \leq n \leq 10^5)——商店中区间的数量。

接下来 nn 行,每行三个整数 lil_irir_icic_i1liri1091 \leq l_i \leq r_i \leq 10^91ci1091 \leq c_i \leq 10^9)——第 ii 个区间的两端与费用。

保证所有测试数据的 nn 之和不超过 21052 \cdot 10^5

输出格式(中文)

对每组数据输出 nn 个整数:其中第 ss 个(1sn1 \leq s \leq n)表示如果只有前 ss 个区间可用,Vasya 将花费的硬币数。

样例

样例 1

输入:

3
2
2 4 20
7 8 22
2
5 11 42
5 11 42
6
1 4 4
5 8 9
7 8 7
2 10 252
1 11 271
1 10 1

输出:

20
42
42
42
4
13
11
256
271
271

在线编程 IDE

建议全屏模式获得最佳体验