#8275. 登山探险(climb)

0
    ID: 8275 传统题 文件IO:climb 1000ms 256MiB 尝试: 4 已通过: 1 难度: 10 上传者: 标签>动态规划贪心数据结构图论建模*190026SCSPS

登山探险(climb)

登山探险(climb)

本题使用文件输入输出,请在程序开头加入:

freopen("climb.in", "r", stdin);
freopen("climb.out", "w", stdout);

题目描述

Y 同学计划前往一个高原地带进行登山探险。该地区共有 nn 条预设的登山路径,第 ii 条路径由 kik_i 个观景台组成,按照攀登顺序,这些观景台的海拔高度分别为 ai,1,ai,2,…,ai,kia_{i,1}, a_{i,2}, \dots, a_{i,k_i}。

Y 同学需要依次走完这 nn 条路径。探险过程需遵循以下规则:

  1. 路径必须完整攀登。一旦开始攀登某条路径,必须按照给定的观景台顺序 ai,1,ai,2,…,ai,kia_{i,1}, a_{i,2}, \dots, a_{i,k_i} 走完该路径内的所有观景台,期间不能切换到其他路径。
  2. 设定一个变量 HH,代表 Y 同学此前所有已到达过的观景台中的最高海拔。在探险开始前,HH 的初始值为 00。
  3. 每当 Y 同学到达一个海拔高度为 xx 的观景台时,若 x>Hx > H,则 Y 同学记录一次“突破”,同时更新当前最高海拔 H=xH = x。若 x≤Hx \le H,则不记录。

请你帮助 Y 同学安排这 nn 条路径的攀登顺序,使得在整个探险过程中记录的“突破”总次数最大。

输入格式

从 climb.in 文件读入数据。

第一行包含一个整数 TT,表示测试数据的组数。

对于每组测试数据: 第一行包含一个整数 nn,表示路径的数量。 接下来的 nn 组描述中,每组包含两行: 第一行包含一个整数 kik_i,表示第 ii 条路径的观景台数量。 第二行包含 kik_i 个正整数 ai,1,ai,2,…,ai,kia_{i, 1}, a_{i, 2}, \dots, a_{i, k_i},依次表示该路径上每个观景台的海拔高度。

输出格式

输出到 climb.out 文件。

对于每组测试数据,输出一行一个整数,表示 Y 同学最多能获得的“突破”次数。

样例

样例输入 #1

2
4
5
4 9 4 6 8
1
7
2
8 6
1
1
4
2
3 4
2
1 8
2
2 8
2
7 9

样例输出 #1

4
4

数据范围与约定

对于 100%100\% 的数据,保证 1≤T≤1041 \le T \le 10^4,1≤n≤2×1051 \le n \le 2 \times 10^5,1≤ki≤2×1051 \le k_i \le 2 \times 10^5,∑ki≤2×105\sum k_i \le 2 \times 10^5,1≤ai,j≤2×1051 \le a_{i,j} \le 2 \times 10^5。

测试点编号 分值 n≤n \le ∑ki≤\sum k_i \le 特殊性质
1∼21 \sim 2 1010 100100 无
3∼63 \sim 6 2020 20002000
7∼107 \sim 10 2×1052 \times 10^5 特殊性质 A
11∼1411 \sim 14 特殊性质 B
15∼2015 \sim 20 3030 无
  • 特殊性质 A:保证对于所有的 ii,均满足 ki=1k_i = 1。
  • 特殊性质 B:保证每条路径上海拔高度序列 ai,ja_{i,j} 均是严格单调递增的。

大样例

点击链接 [bigdata1.in](file://bigdata1.in) 和 [bigdata1.out](file://bigdata1.out) 下载大样例 1 的输入输出数据。

点击链接 [bigdata2.in](file://bigdata2.in) 和 [bigdata2.out](file://bigdata2.out) 下载大样例 2 的输入输出数据。

点击链接 [bigdata3.in](file://bigdata3.in) 和 [bigdata3.out](file://bigdata3.out) 下载大样例 3 的输入输出数据。

点击链接 [bigdata4.in](file://bigdata4.in) 和 [bigdata4.out](file://bigdata4.out) 下载大样例 4 的输入输出数据。