#P16319. [ICPC 2023 Jinan R] 铁路环游

    ID: 18255 远端评测题 3000ms 128MiB 尝试: 0 已通过: 0 难度: 8 上传者: 标签>动态规划 DP并查集2023动态规划优化ICPC济南

[ICPC 2023 Jinan R] 铁路环游

题目描述

请注意本题不同寻常的空间限制。\textbf{请注意本题不同寻常的空间限制。}

《铁路环游》是一款以铁路为主题的德式桌游。在游戏中,玩家需要打出火车卡并在地图上建造铁路。建造出的铁路长度以及玩家是否能连通较远的城市决定了得分,其中需要连通的城市由抽取的车票卡决定。

:::align{center}

BoardGameGeek 用户 @garyjames 拍摄的照片 :::

考虑游戏的一维版本。有 (n+1)(n + 1) 座城市排成一行,从左到右编号从 00nn。对于每个 1in1 \le i \le n,您可以在城市 (i1)(i - 1) 与城市 ii 之间放置一条铁路以连通它们。

mm 张车票卡用于奖励玩家连通城市的行为。第 ii 张卡可以记为三个整数 lil_irir_iviv_i,表示如果城市 lil_irir_i 可以通过铁路连通(也就是说,对于所有 li<jril_i < j \le r_i,城市 (j1)(j - 1)jj 之间都有一条铁路),您将获得 viv_i 分。

对于每个 1kn1 \le k \le n,计算您恰好放置了 kk 条铁路的最大得分。如果没有获得任何奖励,您的得分为 00

输入格式

有多组测试数据。第一行输入一个整数 TT 表示测试数据组数,对于每组测试数据:

第一行输入两个整数 nnmm1n,m1041 \le n, m \le 10^4)表示您可以放置铁路的最大数量以及用于奖励的车票卡数量。

对于接下来 mm 行,第 ii 行输入三个整数 lil_irir_iviv_i0li<rin0 \le l_i < r_i \le n1vi1091 \le v_i \le 10^9)表示如果城市 lil_irir_i 可以通过铁路连通,您将获得 viv_i 分。

保证所有数据 nn 之和与 mm 之和均不超过 10410^4

输出格式

每组数据输出一行 nn 个由单个空格分隔的整数,其中第 ii 个整数表示您恰好放置了 ii 条铁路的最大得分。

请不要在行末输出多余空格,否则您的答案可能会被认为是错误的!

2
4 3
0 2 3
3 4 2
0 3 1
3 1
1 3 100
2 3 5 6
0 100 100

提示

(i1,i)(i - 1, i) 表示一条位于城市 (i1)(i - 1)ii 之间的铁路。对于第一组样例数据:

  • 如果您放置 11 条铁路,您可以放置 (3,4)(3, 4),然后获得第二个奖励。答案是 22
  • 如果您放置 22 条铁路,您可以放置 (0,1)(0, 1)(1,2)(1, 2),然后获得第一个奖励。答案是 33
  • 如果您放置 33 条铁路,您可以放置 (0,1)(0, 1)(1,2)(1, 2)(3,4)(3, 4),然后获得第一和第二个奖励。答案是 3+2=53 + 2 = 5
  • 如果您放置了所有 44 条铁路,可以获得所有奖励。答案是 3+2+1=63 + 2 + 1 = 6