故地重游
去年连该写 spj 都不知道,毫不意外地挂大分了。今年重写这道题,把打的草稿放上来好了。
两条原则:把最后一个栈留空来应对各种情况;让 个栈的大小都不超过 。
考虑加入一个数,
-
如果这个数在前面的栈里出现过了:
- 假如出现在栈顶,直接加入相应的栈进行消除。
- 假如出现在栈底,加入最后一个栈,然后用第二种方法消除。
-
如果这个数在前面的栈里没有出现过:
-
如果前 个栈还有没有到达 的栈,那么把这个数压入这个栈,不发生任何消除。
-
如果到这个数下一次出现都没有出现栈底的数,把这个数压入最后一个栈,直接操作到这个数下一次出现。
-
如果到这个数下一次出现之间出现了栈底的数,记栈底的数为 ,它上面的数是 :
- 如果到 出现之前 出现了偶数次,那么可以把这个数压入 这个栈,后面遇到的 也都还是压入这个栈(会自己消掉),最后把 压入最后一个栈并进行第二种消除。
- 如果到 出现之前 出现了奇数次,那么可以把这个数压入最后一个栈,后面遇到的 也都还是压入 这个栈, 也压入这个栈,然后 这个栈就空了。
-
所以为什么今年写的代码比去年补题时的代码长了 0.8K 呢?还是用了 lambda 表达式才比去年短。
去年连爆栈这种事情都没意识到,白白浪费了一个小时。
另外这题在洛谷上出现了蓝->紫->蓝->紫的反复横跳。但其实 DP 的部分应该不是很难才对(可能单拿出来只有绿?)。
本来想写写简要题解的,但是感觉没什么可解释的,咕了。
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 阿里最新开源QwQ-32B,效果媲美deepseek-r1满血版,部署成本又又又降低了!
· Manus重磅发布:全球首款通用AI代理技术深度解析与实战指南
· 开源Multi-agent AI智能体框架aevatar.ai,欢迎大家贡献代码
· 被坑几百块钱后,我竟然真的恢复了删除的微信聊天记录!
· AI技术革命,工作效率10个最佳AI工具