问题2272--HDOJ1950-Bridging Signals

2272: HDOJ1950-Bridging Signals

时间限制: 1 Sec  内存限制: 128 MB
提交: 3  解决: 2
[提交] [状态] [讨论版] [命题人:]

题目描述

路由设计人员再一次完全搞砸了:把两个功能块的端口连接起来的芯片上的信号相互交叉。在这个过程的后期阶段,重新进行路由是非常昂贵的。相反,工程师必须使用第三维桥接信号,这样就不会有两个信号交叉。然而,桥接是一项复杂的操作,因此希望桥接尽可能少的信号。这种计算机程序的要求是,在没有相互连接的情况下,能够在硅表面上连接的信号的最大数量,这是迫在眉睫的。记住:一个功能块的边界上可能有数千个信号端口,解决这个问题需要相当多的程序员。你能胜任这项工作吗

如图所示,在左侧:两个块的端口及其信号映射(4,2,6,3,1,5)。在右侧:最多3个信号可以在硅表面上路由,而不会相互交又。虚线信可必须桥接。


上图描述了一个典型的情形。两个功能块的端口从顶部到底部用1~p编号。使用字1~ρ的排列描述信号映射关系,列表中有ρ个唯一的数字,范围为1~p,其中第i个数表示右侧的端口号应该连接到左边的第i个端口。

当且仅当连接两个端口的直线交叉,两个信号交叉。


输入

第一行有一个正整数n,是测试例的数量。对每个测试例,第一行是一个正整数p<40000,两个功能块上的端口数。然后是p行,描述信号映射关系:第i行是右侧块的端口号,应该连接到左侧块的第i个端口。


输出

对每个测试例输出一行,即在硅表面上路由的最大信号数,实现信号不会相互交叉。


样例输入

2
4
4
9
7
8
3
7
4
8

样例输出

3
2

来源/分类


[提交] [状态]