社区讨论

NOIPT2求Hack/求调

学术版参与者 4已保存回复 7

讨论操作

快速查看讨论及其快照的属性,并进行相关操作。

当前回复
7 条
当前快照
1 份
快照标识符
@lo7e5u30
此快照首次捕获于
2023/10/27 00:21
2 年前
此快照最后确认于
2023/10/27 00:21
2 年前
查看原帖

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 维护其下标,直接操作即可。

回复

7 条回复,欢迎继续交流。

正在加载回复...