BZOJ 4567

题解

第一种情况一定不会存在 —— 因为这种情况完全可以避免,而且在避免这种情况的情况下,最大代价不会超过 n \times nn×n

现在相当于,题目多了一个限制条件,每个字符串的后缀必须先被填入。我们把每个字符串反转,转化为每个字符串的前缀必须先被填入。

问题在于,填完一个字符串后,以它为前缀的字符串们被填入的顺序如何确定 —— 我们建立一棵 Trie 树,DFS 求出每个点 uu 向上最近的单词点 p(u)p(u),注意这里的 uu 不一定是 p(u)p(u) 的子节点,p(u)p(u) 可以通过添加一个或多个字符来得到 uu

将每个 p(u)p(u) 与 uu 建立父子节点关系,在新的树上 DFS,优先走子树大小(子树上的单词数量)较小的节点,记录每个节点的 DFS 序即为填写顺序。



评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值