#P1292. 时间线修复
时间线修复
时间线修复
题目描述
在四维空间中,Orange由于过度使用时间调制器,导致时间线发生了紊乱,这导致了四维空间中可能会出现一些非正常的时空碎片,这是在太糟糕了!
我们这里假设时间是一条不断向前延伸的直线,其共包含 个时间点,其中其中的时间点不断向前延伸,依次为 。但是由于Orange的干预,导致其发生了一些异常,例如可能出现多个时间点 ,也有可能出现 ,但是不存在 ,即 并不是由时间线向前延伸过来的,而是突然发生时间跳跃而产生的时间点。
Orange知道,在四维空间产生的时间异常会对原来的三维空间造成非常大的影响,因此他必须马上修复这个异常。Orange需要从现有的 时间点中挑选出一个子序列,用来修复异常的时间。
Orange挑选的时间点必须满足如下要求:
- 我们假设Orange挑选的时间点记为集合 。
- 选择出的时间点必须包含 ,因为 是时间的起点,即 。
- 所挑选的时间点必须唯一,也就是不应存在选择两个相同的时间点,即 。
- 若要挑选 时,则需要保证 之前所有的时间点 都在集合中,即 $\forall j(j 子序列:子序列指的是从原序列中任意删除部分元素,剩下元素相对位置保持不变所构成的序列。
输入格式
输入包含多组测试数据,第一行为一个整数 ,表示测试数据数。 对于每组测试数据: 第一行为一个整数 ,表示时间点的个数。 第二行为 个整数 ,表示各个时间点。
数据范围:
输出格式
对于每组测试数据,输出一行,包含一个整数表示答案。
样例 #1
样例输入 #1
2
5
1 2 1 3 4
3
2 3 4
样例输出 #1
8
0
提示
样例解释1
对于序列 的所有子序列: 我们可以选择大小为 的集合: , 我们可以选择大小为 的集合:, 我们可以选择大小为 的集合: , 我们可以选择大小为 的集合: , 可以证明不包含其他选择方法,因此答案为 。