讨论一下2018南京的M.Mediocre String Problem

17 篇文章 0 订阅
9 篇文章 0 订阅

快12点了= =。

实在是忍不住想切这题,写个博客记录一下思路明天再搞(虽然这篇博客过了审核的时候我应该又开始搞了)。

题目简化后是这样的,给两个串s和t,求从s中取一个子串与t的一个前缀连接后能组成回文串的个数,但是要求从s中取的子串长度要大于所选择的t的前缀。

一开始漏看了后半段的条件…一想这不是sam的裸题吗,s串倒着建sam,然后t串进去走,走不动了就立马停,接着ringt集合大小搞一通。

然后一看样例不对…这样例一(s = ababa,t = aba)怎么是个5啊。

然后再一看要求取的子串必须大于取的前缀…

又一想不对啊…就算没有这个条件也要考虑中间的回文,有了这个条件反而简单了。

那正确的思路应该是,取的子串的左边倒过来与t中取的前缀相匹配,然后中间夹着一个回文串。

那么第一步毫无疑问是…处理出s串中所有回文串的位置。

怎么处理呢…manacher或者回文树吧,sam应该也可以直接处理出回文串,在2015年张天扬的国家集训队论文里见过这种操作。

不会,告辞.jpg,我只会用回文算法求回文。

嗯…之后呢,之后该怎么办…

匹配位置加前一个位置(倒着来的嘛)的回文串个数…

啊写不下去了写不下去了再写门禁了明天再搞。

2018.10.15日中午:
我写完了…
应该没问题吧…

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值