“一切都会好起来的。”|

zplqwq

园龄:3年10个月粉丝:25关注:14

2022-06-21 17:31阅读: 84评论: 0推荐: 0

题解 P5768 [CQOI2016]路由表

首先,我们需要明白一个道理,由于匹配的时候只匹配掩码的长度,设为 l 。那么我们只插入前 l 个字符即可。

其次我们考虑如何求出在 lr 之间求出连接个数。

在考虑具体问题之前,有一点很重要

ans(r,l)=ans(1,r)ans(1,l1)

根据这个性质,我们分别求出 ans(1,r)ans(1,l1) 即可。

我们 trie 最开始标记的是当前字符是否出现过。然而在这个题目背景下,我们考虑标记插入的时间。

那么,我们现在知道标记的时间,该如何求出连接个数呢。

举个例子。

这种情况下是显然的,这两个节点就是我标记好的节点,直接计算中间的节点数即可。

但现在有一个问题,如果情况变成这种该怎么办呢?

我们要求 lc 之间的连接个数。

我们发现,c 是废的。因此我们在这种情况下就不考虑 r 节点了。

看到这,我们发现,这个结构类似于单调栈。

即,当我后插入的节点比前面的节点小时,那么前面的节点就不要了。

因此我们考虑用一个单调栈来维护。

每次把比当前时间靠后的节点弹出去,所剩下的元素个数就是我们要求的答案。

本文作者:zplqwq

本文链接:https://www.cnblogs.com/zplqwq/p/16397667.html

版权声明:本作品采用知识共享署名-非商业性使用-禁止演绎 2.5 中国大陆许可协议进行许可。

posted @   zplqwq  阅读(84)  评论(0编辑  收藏  举报
评论
收藏
关注
推荐
深色
回顶
收起
点击右上角即可分享
微信分享提示