时间限制:1 秒 空间限制:262MB
一座城市沿笔直的主干道路布设地下管线。每份管线记录含起始里程、终止里程以及类别标识。施工方登记时采用的测量方向未必一致,因此记录的首个里程值可能比第二个大。
管理部门计划将符合下述要求的管线区段归并:
归并结果覆盖参与合并的全部区间。同类记录应充分归并,类别不同的记录则分别保留。
输入占一行,为二维整数列表 segments。其中每个三元组 [l,r,c] 依次给出两个里程值与管线类别;列表格式与样例一致。
输出一行二维列表,每条记录仍按 [l,r,c] 表示。所有记录都须满足 l≤r。结果先比较左边界,数值小的在前;左边界一致时,类别编号较小的优先。输出中不含额外空格。
约束:1≤∣segments∣≤105,0≤l,r≤106,1≤c≤1000。
请实现核心函数 solve。评测模板负责读取输入、调用函数并输出结果。
| 语言 | 签名 |
|---|---|
| C++ | vector<array<long long,3>> solve(vector<array<long long,3>> segments) |
| Java | long[][] solve(long[][] segments) |
| Python | solve(self, segments: List[List[int]]) -> List[List[int]] |
| JavaScript | solve(segments) |
| C | int solve(Segment *segments, int n);原数组前 return 项即结果 |
segments 每项依次为 [l,r,c];返回同类型合并后的二维列表。C 使用 Segment 结构体,函数返回结果数量,并将结果写在数组前部。
输入
[[9,2,4],[7,13,4],[1,3,8],[3,6,8],[20,20,4]]
输出
[[1,6,8],[2,13,4],[20,20,4]]
说明
类别 4 的前两段归并成 [2,13],而单点 [20,20] 单独留下。类别 8 的两段在里程 3 处相接,归并成 [1,6]。最后依据左边界排序。
输入
[[12,4,2],[5,6,2],[0,2,7]]
输出
[[0,2,7],[4,12,2]]
说明
类别 2 的短区间包含在 [4,12] 之内,归并后边界不变。
Scan the QR code below with WeChat to sign in
设置一个用户名,下一步用微信扫码完成注册
请使用微信扫描下方二维码完成注册