题解 P5768 [CQOI2016]路由表
首先,我们需要明白一个道理,由于匹配的时候只匹配掩码的长度,设为 。那么我们只插入前 个字符即可。
其次我们考虑如何求出在 和 之间求出连接个数。
在考虑具体问题之前,有一点很重要
根据这个性质,我们分别求出 与 即可。
我们 trie 最开始标记的是当前字符是否出现过。然而在这个题目背景下,我们考虑标记插入的时间。
那么,我们现在知道标记的时间,该如何求出连接个数呢。
举个例子。
这种情况下是显然的,这两个节点就是我标记好的节点,直接计算中间的节点数即可。
但现在有一个问题,如果情况变成这种该怎么办呢?
我们要求 和 之间的连接个数。
我们发现, 是废的。因此我们在这种情况下就不考虑 节点了。
看到这,我们发现,这个结构类似于单调栈。
即,当我后插入的节点比前面的节点小时,那么前面的节点就不要了。
因此我们考虑用一个单调栈来维护。
每次把比当前时间靠后的节点弹出去,所剩下的元素个数就是我们要求的答案。
本文作者:zplqwq
本文链接:https://www.cnblogs.com/zplqwq/p/16397667.html
版权声明:本作品采用知识共享署名-非商业性使用-禁止演绎 2.5 中国大陆许可协议进行许可。
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步