CF2201B Recollect Numbers 题解

CF2201B

构造题。对于这种题目可以从单种数字对整体的贡献入手。最小化翻的次数十分容易,下面讲解最大化翻的次数。

对于每一对数,如果相邻并且一次翻开,翻的次数为2次。

如果前面翻开过其中一张,新翻开的作为本次操作的第一张,由于不会往后翻,翻的次数为3次。

如果前面翻开过其中一张,新翻开的作为本次操作的第二张,就需要额外一次操作把两张翻开,翻的次数为4次。

我们要让4次尽量多。思考这种构造的本质,无非是数字不能同种相邻,并且第二张数字牌要是本次操作翻开的的第二张。

由于一次翻两张,除非出现翻的次数为3的情况,否则一般偶数位都是本次操作翻开的第二张。秉承这种原则,先写出这样的序列。

1()2()3()4()5()

然后在偶数位填上数字,从第二位开始填,否则违背不能同种相邻原则。

1()2 1 3 2 4 3 5 4

唉?那第二位只能填5了。没错,我们不可能让所有数字都贡献4次。可以这样想,当你只剩下最后两个卡片没翻开,一定有一张是本次操作翻开的第一张,也就是一定会存在一种卡片的贡献为3次。

但是由于一种贡献为3次的卡片,翻完之后就不会往后翻,就会导致下一张卡片也一定贡献为3次。详见上方构造的4和5的情况,贡献都是3次。

因此最大贡献为 \(2 * n - 1\)

posted @ 2026-07-16 19:46  風月華  阅读(3)  评论(0)    收藏  举报