bzoj#P1106. [POI2007]立方体大作战tet

[POI2007]立方体大作战tet

题目描述

一个叫做立方体大作战的游戏风靡整个 Byteotia。这个游戏的规则是相当复杂的,所以我们只介绍他的简单规则:给定玩家一个有 2n2n 个元素的栈,元素一个叠一个地放置。这些元素拥有 nn 个不同的编号,每个编号正好有两个元素。玩家每次可以交换两个相邻的元素。如果在交换之后,两个相邻的元素编号相同,则将他们都从栈中移除,所有在他们上面的元素都会掉落下来并且可以导致连锁反应。玩家的目标是用最少的步数将方块全部消除。

输入格式

第一行包含一个正整数 nn (1n50,000)(1\leq n\leq 50,000)

接下来 2n2n 行,每行一个数 aia_i (1ain)(1\leq a_i\leq n),从上到下描述整个栈,保证 [1,n][1,n] 范围内每个整数出现且仅只出现两次。

输出格式

输出仅一行包含一个数,表示消除所有方块最少使用的步数。

5
5
2
3
1
4
1
4
3
5
2
2
3
1
2
3
1
2
3
3

数据规模与约定

1ain500001\leq a_i\leq n\leq 50000

初始时,保证没有两个相同元素相邻。并且保证所有数据都能在 10610^6 步以内出解。

题目来源

[POI2007] 立方体大作战tet