题目描述
小 I 与小 J 正在玩一个叫做“开火车”,又称作“拖板车”和“小猫钓鱼”的扑克游戏。游戏规则如下,注意其与一般玩法可能有不同:
有 2 n 2n 2n张牌,其中对于整数 1 ≤ i ≤ n 1≤i≤n 1≤i≤n,牌面为 i i i 的牌恰好有 2 2 2 张。
游戏开始时,小 I 和小 J 各拿其中 n n n 张牌组成双方的初始手牌。
维护一个公共牌堆(可以将其看作一个栈),初始没有牌。
小 I 与小 J 依次行动,小 I 先手。一次行动时,行动方依次进行以下操作:
将手牌中的一张牌放在公共牌堆顶;
若此时公共牌堆中有两张相同的牌,则这两张相同的牌以及在这两张牌之间的所有牌从公共牌堆移到当前行动方手牌中;
若此时当前行动方没有手牌,则当前行动方失败,另一方胜利。
小 J 是扑克萌新,所以会按照以下策略行动:
维护一个队列,初始将 n n n 张手牌按照一定顺序放入队列中;
每次行动时,将队列开头的牌放在公共牌堆顶;
若小 J 放入某张牌后公共牌堆中有两张相同的牌,则按照在公共牌堆中自顶到底的顺序将获得的牌放入队列尾。
小 I 通过偷看得到了小 J 的策略以及队列中牌的顺序。
现在小 I 不仅想获胜,还想速战速决,用最少的行动次数获胜,但他也是扑克萌新。
所以给定小 J 队列中的 n n n 张牌以及它们的顺序,你需要给出小 I 的策略,使得小 I 能够获胜,同时行动次数最少,或者告诉他这是不可能的。
题目大意
用一种最少的行动次数和其出牌策略让小I胜利。
详细思路
如果小J有两张相同的牌的话,那么小I肯定也会有两张相同的牌。
因此小J有两张相同的牌的第一张牌可以被小I的两张相同的牌一前一后包夹收掉。
如果小J有一张单张的牌,再他出了以后小I直接出于其相同的牌,以直接收掉。
优先处理单张的牌情况,再处理两张相同的牌的情况。
如果遇到单张的牌在最后面的情况,可以不用处理,因为小J已经没有牌了。
这样只填一定只会用 n n n行动次数,如果按照上面两种填法填好以后还有空位置,那么可以用小I拥有的两