【 Description 】
有n列箱子,其中有些是宝箱、其他是空箱。每一秒钟你可以选择以下操作执行:
-
将第i列最上面的一个箱子移动到第j列的最上面;
-
如果第i列最上面的一个箱子是宝箱,将其打开取出宝物,之后这个箱子消失;
你也可以理解成 n个栈,每次操作移动某个栈顶元素、或者删除某个位于栈顶的宝箱。
请问如果想打开所有宝箱,最少需要的操作次数。
【保证 n > 1】
【 Input 】
第一行输入一个整数T,表示有T组数据。
每组数据第一行输入一个整数 n,表示栈的数量(保证 n > 1)。
接下来n行,首先两个整数代表栈的高度h,和这个栈中宝箱的数量m,接下来m个整数给出每个宝箱在栈中的高度(保证升序),栈底高度=1,栈顶高度=size。
【 Output 】
对于每组数据,输出一个整数表示答案。
【HINT】
对于 100\%100% 的数据,保证 1\le T\le 5, 1 < n\le 10^5, 0\le h\le 10^9, \sum{m}\le5\times 10^51≤T≤5,1<n≤105,0≤h≤109,∑m≤5×105。
|
测试点
|
nn
|
hh
|
|
1-31−3
|
\le10≤10
|
\le100≤100
|
|
4-54−5
|
\le20≤20
|
\le100≤100
|
|
5-75−7
|
\le1000≤1000
|
\le1000≤1000
|
|
8-108−10
|
\le10^5≤105
|