CSP-J 2026 第二轮入门组真题解析(第四题
- 2026-11-01 18:23:15
CSP-J 2026 第二轮入门组真题解析(第四题
CSP-J 2026 第二轮入门组真题解析(第四题
今天带大家拆解 CSP-J 2026 入门组第四题《纸牌游戏》。这题表面在玩牌,其实考的是逆向思维和栈。
题目给了一叠牌,要打 n 局。每局从第 i 张开始打,桌面有同点数就收走旧牌和右边的牌,最后统计每种点数留在桌面的局数。
最直白的方法是一局局模拟,但 n 最大 50 万,O(n²) 绝对超时。突破口是逆向思考:一张牌只要没遇到自己最后一次出现,就不会被收走。所以打出它最后一次出现的那张时,右边全清空,桌面就是“这张牌 + 后面剩余牌形成的最终桌面”。
顺着这个规律,算法只需五步:
找终点:先记录每种点数最后出现的位置。
建跳跃:算出从当前位置起跳的下一个位置。
传路线:从左到右把经过当前位置的路线数传给下一站。
攒答案:把路线数加到当前牌面对应的点数上。
直接输出。
这样时间复杂度只有 O(n+m),轻松过百万级数据。
这道题真正值得学的是合并重复操作的思想——别傻乎乎重做,找到能共享的结果才是高手。
原文CSP-J 2026 第二轮入门组真题解析(第四题 、纸牌游戏(card))
山东,3小时前,
本文来自网友投稿或网络内容,如有侵犯您的权益请联系我们删除,联系邮箱:wyl860211@qq.com 。