NOIPT2求Hack/求调
  • 板块学术版
  • 楼主Logic_J_X
  • 当前回复7
  • 已保存回复7
  • 发布时间2022/12/5 21:54
  • 上次更新2023/10/27 00:21:12
查看原帖
NOIPT2求Hack/求调
187232
Logic_J_X楼主2022/12/5 21:54

code

我手写的checker

思路

若只存在 2n22n-2 种卡牌,则留下一个空栈,其他每个栈最多只放两张卡牌。这时候的栈只有四种情况:

  1. 空栈;

  2. 只有一张卡牌;

  3. 栈底的下一张同种卡牌来的早,这时只能从栈底消;

  4. 栈顶的下一张同种卡牌来的早,这时只能从栈顶消;

若有 2n12n-1 种卡牌,考虑所有栈中已有 2n22n−2 种卡牌,要加入一张另一种卡牌放哪:

  1. 若存在一个栈从栈底消,放在该栈不会使该栈中的卡牌不能消去;

  2. 否则,放在空栈。

所以有 2n12n−1 种卡牌时栈还可能存在第五种情况:

栈中有三种卡牌,只保证栈底的卡牌比栈中间的卡牌下一张同种卡牌来的早,从栈底消去后会变成第 33 或第 44 种情况 空栈用栈维护其下标,2,3,4,52,3,4,5 情况的栈用 setset 维护其下标,直接操作即可。

2022/12/5 21:54
加载中...