StringSequences
题意:
给出两个长度不超过\(50\)的字符串\(S, T\),每次可以在\(S\)中插入一个字符,把每次操作后的\(S\)写成一个序列,问有多少种不同的序列.
注意到我们可以把\(S\)拆分成一段一段原序列/新增序列,我们只需要统计出新增序列对应\(T[l : r]\)的方案数\(g[l, r]\),接下来枚举\(S[i + 1]\)匹配下一个位置\(T[k]\),\(dp[i, j] \rightarrow g[j + 1, k - 1] \times dp[i + 1, k] \times \binom {k - i - 1} {j - i}, S[i + 1] = T[k]\).
我们枚举第一次新增的位置\(k\),\(g[l, r] = \sum_{k} g[l, k - 1] \times g[k + 1, r] \times \binom {r - l} {k - l}\),注意到这样可能会重复,也就是\(T[k] = T[r]\)的情况,不进行这样的转移就好了.因为我们转移的右半区间其实已经包含这种情况了(这步挺厉害的
StringSequences的更多相关文章
随机推荐
- 手贱删了一些不该删的东西,导致git pull每次都要输入账号密码...
解决办法: 输入一次账号密码,然后git工程目录下执行 git config --global credential.helper store 就妥了.
- ADO.NET 三(Command)
操作数据库需则要用到 Command 类中提供的属性和方法.下面来介绍一下如何使用 Command 类来操作数据表中的数据. Command 类概述 在 System.Data.SqlClient 命 ...
- 那些年,Linus torvalds大神喷过的技术
Linus Torvalds 被认为是最伟大的程序员之一,因为他写出了使用最广泛的软件,如 Linux 内核和 Git 版本控制系统.但是他这个人经常因为讲话带有情绪,甚至是因为带有脏话的意见而饱受非 ...
- spring boot 使用GraphQL
在此之前需要简单了解GraphQL的基本知识,可通过以下来源进行学习 GraphQL官方中文网站 :https://graphql.cn GraphQL-java 官网:https://www.gra ...
- tp5模板中js方法中url函数传参的解决办法
代码如下: layer.msg(data.msg, {icon: 1,time:1500,shade: 0.1}, function(index){ layer.close(index); var s ...
- AI人脸识别SDK接入 — 参数优化篇(虹软)
引言 使用了虹软公司免费的人脸识别算法,感觉还是很不错的,当然,如果是初次接触的话会对一些接口的参数有些疑问的.这里分享一下我对一些参数的验证结果(这里以windows版本为例,linux.andro ...
- Linux正则表达式,grep总结,sed用法
原文: 1.sed 流编辑器,实现对文字的增删改替换查(过滤.取行),能同时处理多个文件多行的内容,可以不对原文件改动,把整个文件 输入到屏幕,可以把只匹配到模式的内容输入到屏幕上.还可以对原文件 ...
- H3C 802.11n
- Centos部署项目
nginx + virtualenv + uwsgi + django + mysql + supervisor 部署项目 一.安装Python3 二.安装MariaDB,并授权远程 grant al ...
- php连接mySql,加密函数
连接MySQL mysql_connect(servername,username,password); 面向对象: <?php $servername = "localhost&qu ...