Card Game

这道题目肯定是想办法尽量全部都取正数

我们考虑\(a_1\)\(a_2\)

如果\(a_2\)为负,那么我们可以把第二张牌之后的所有正数全部拿下:从第三张牌一直拿,直到第三章牌为负数,此时删除第二张牌,于是就可以重复了。所以这个时候如果\(a_1\)为正就取,为负就不取,无论怎样都拿走了所有正数

如果\(a_2\)为正且\(a_1\)为正,我们仍然从第三张牌一直拿,直到第三章牌为负数,此时拿走第一张牌,就转变为了上面的情况

如果\(a_2\)为正且\(a_1\)为负,那么如果我们想要取所有正数的话,我们必须要将\(a_2\)放在奇数位,然而在这种情况下,我们只有取走\(a_1\)才能将\(a_2\)放在奇数位。也就是说我们有两种选择,要么\(a_1\)\(a_2\)都取走,要么都不取;如果我们不取走所有正数的话,我们就放弃\(a_2\),剩下的正数全部都可以拿(如果不放弃\(a_2\)而放弃其他的正数,由上面的分析无论如何都要拿\(a_1\),而拿了\(a_1\)就可以拿走所有的正数了,所以不会不放弃\(a_2\)

update 2024.8.3

想到一种新的做法。不难发现拿走一张牌不会影响这张牌上面的排的顺序,于是我们尽量考虑从后面拿

我们将数列分块,连续的正/负数为一块

那么如果一个正数块的块头处于奇数位,这个块的所有正数显然都可以拿走;如果一个正数块的块头处于偶数位但是这个正数块前面还有正数块的块头处于奇数位,那么这个正数块的所有正数也可以拿走(只需在前面的那个正数块拿走块头,这个正数块的块头就变成奇数位了)

于是我们考虑从后往前拿,这样最后剩下的正数块肯定是所有正数块的块头都位于偶数;此时我们要想拿掉一个正数块的话,就必须要拿掉一个负数,然后按之前的方法就可以拿走这个负数后面的所有正数,枚举并更新就好了

posted @ 2024-03-29 21:30  最爱丁珰  阅读(3)  评论(0编辑  收藏  举报