当前位置: 首页 > news >正文

edu 106 E(LCS dp + 多源bfs优化)

E

先考虑对两个固定串怎么做:可以确定形成串的末尾一定是 \(a_{i}\) 或者 \(b_{j}\),直接子序列 \(dp\) 即可:\(dp_{i,j,0/1}\) 表示只考虑 \(a\) 长度为 \(i\) 的前缀和 \(b\) 长度为 \(j\) 的前缀,\(0\) 表示形成的串以 \(a_{i}\) 结尾;\(1\) 表示形成的串以 \(b_{j}\) 结尾,方案数。转移 \(O(n^{2})\)

那么推广到对 \(a\)\(b\) 的所有 子串对 计数,显然不能枚举子串对分别计数。现在考虑:对 \(a,b\) 两个整串作 \(dp\) 后,我们可以得到哪些 子串对 的答案?实际上,我们得到了所有 必须以 \(a[1],b[1]\) 开头,以任意 \(a[i]\)\(b[j]\) 结尾 的 子串对 的方案数 —— 对应于 \(dp\) 状态的每个 \(dp_{i,j}\)。也就是说,目前得到了 左端点固定为开头,右端点任意 的所有子区间的答案。如何扩展到 左端点任意,右端点任意 的情况呢?

暴力枚举左端点对显然是不可取的。考虑上述 \(dp\) 的转移过程:不难发现,转移式与当前串的左端点取什么是没有关系的,只和当前位置和前一个位置相关。这个时候,思考一下多源 \(bfs\):存在多个起点时,可以直接将所有起点先放进队列,然后 \(bfs\)转移过程只和钦定的通行方式有关;最终就可以求得对于所有位置,从任意起点出发的最短路。仔细想一下二者之间的关系,发现:所有可能的左端点对 \((l_{a},l_{b})\) 可以看作是多源 \(bfs\) 的多个起点;并且转移是固定的,和起点的位置无关。因此可以考虑对上述 \(dp\) 转移作类似多源 \(bfs\) 的优化:预先初始化好所有左端点对的dp状态,再直接对整体做一次转移,最终得到的 \(dp_{i,j}\) 便表示 \(a,b\)左端点任意,右端点分别为 \(i, j\) 的所有区间的答案,对所有 \(dp_{i,j}\) 作和即为所求。

需要额外注意的地方:题目明确要求 \(a,b\) 中的子串均非空,但初始化时包含了 \(a,b\) 某一个是空串。因此需要考虑分别去除掉 \(a\)\(b\)非空\(b\)\(a\)非空 的合法情况。二者均可 \(O(n^{2})\) 求得。具体细节见代码。

code

http://www.sczhlp.com/news/110698/

相关文章:

  • ABC310E NAND repeatedly 题解
  • MyBatis插入语句配置
  • 操作运算符
  • 要建设网站郑州网站制作十年乐云seo
  • 鄂州网站开发开源的 二次网站开发
  • 网站开发开票交税额井冈山网站建设
  • 虚拟主机怎么做网站网站建设一龙条
  • 周至县做网站和网站建设签合同
  • 网站信息推广途径包括哪些网站用什么服务器
  • 整体二分
  • 得力 - Bruce
  • 电商网站架构设计如何自建网站接广告
  • 网站建设需要了解哪些信息wordpress学校主题
  • ps个人网站中国第一网页游戏开服表
  • 美食网站开发目的与意义90设计app
  • 做网站推广话术wordpress 编辑界面
  • 课程分销的网站怎么做建设事业单位网站多少钱
  • 网站建设制作苏州伊宁seo网站建设
  • 拓尔思网站建设公司网站内容模板
  • 短视频营销运营导师张伽赫,绳木传媒AI+短视频引领企业数字化变革
  • 详细介绍:还在重启应用改 Topic?Spring Boot 动态 Kafka 消费的“终极形态”
  • 中国建设银行公司网站官网wordpress调用文章缩略图
  • 青浦网站设计制作哪些网站可以做房产推广
  • 数据库做图书管理系统网站做cpa的网站源码
  • 网站开发编程河南建设厅二建公示网站首页
  • 网站建设的小结十大互联网广告公司
  • 没有域名能做网站吗网络营销 网站建设
  • 中山的网站建设公司高端网站建设的网站
  • 基于php mysql的网站开发怎么做网站写书
  • icp备案网站接入信息ip地址段canva在线平面设计官网