【BZOJ】【P3881】【Coci2015】【Divljak】【题解】【AC自动机】

传送门:http://www.lydsy.com/JudgeOnline/problem.php?id=3881

感谢TimeMachine神犇的提醒

对S建AC自动机,记录每个串的末尾结点

插入就是在fail树上跑一遍,把经过且本次没有访问过的结点ans++

询问O(1)

如果在每个点挂链的话会T掉

考虑所有的S都是a,

然后我有10^5的插入a

每次插入扫一遍链,n^2了……

UPD:

鸟哥说我的做法复杂度不对……

搞了一下常数卡时过了

求教正确姿势

UPD:

发现自己犯了一个傻逼错误导致跑了15s+

改了之后暂时刷到了rank1

UPD:

卢爷把我叉掉喽

先滚回教室上晚自习明天重写

叉掉我的数据(卢爷提供思路TImeMachine做数据,暂未添加到bzoj)

不过同样的做法卢爷只用了1s+,我用了10s+……(标程<1s)

这什么情况 = =、

Code:

不贴代码了

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 18
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 18
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值