CF149E

题意:给出一个长度为n的文本串和m个模式串,求有多少个模式串可以拆成两半,使得这两半按顺序匹配(n<=2e5,m<=100)


最暴力的想法就是对于每个询问串,全部和原串做一遍kmp,求出每个前缀/后缀在原串中被匹配到的最前/最后位置,但这样对于每组询问都需要遍历文本串一遍
可以考虑对文本串建立SAM,对于每个节点我们可以求出其endpos中的最小值,然后对于每组询问串,直接在SAM上走即可
时间复杂度\(O(n+\sum |T| )\)

CF223B

题意:给你两个字符串S,T。将S中所有的子序列(要求这些子序列和T串相同)染色,最后问你能否将S染全,即每个字符都会染到


对于S中的每个位置考虑其能否被染到,即是判断能否在左边找到一个子序列,在右边找到一个子序列,和它自己拼起来正好是T串
于是可以从左到右求出以i为子序列的最后一个位置,最远可以匹配到T的哪里;从右到左求出以i为子序列最后一个位置,最远可以匹配到T的哪里
最后对于每个位置判断一下这个东西是否交叉即可

CF291E

题意:一棵树,每条边上有一些字符,求目标串出现了多少次到


很显然的做法是一边dfs一边kmp,但是这样会被卡掉,因为在有撤销/回退情况下,kmp会被卡到平方级别,所以我们提前把kmp补全成自动机即可。

CF645E

题意:字符集大小为k,有一个初始串S,你需要在后面接上一个长度为n的字符串,使得最终字符串本质不同的子序列个数最多


先考虑对于一个固定字符串,如何求它的本质不同子序列个数
设\(dp[i]\)表示前i个位置的本质不同子序列个数
那么\(dp[i]=2 \times dp[i-1] - dp[pre[s[i]]-1]\)
现在考虑后面的n个位置,显然\(dp[i]\)是单调递增的,所以每次选择的\(pre[s[i]]-1]\)尽可能小即可

CF316G

题意:有10个限制(p,l,r),若一个字符串t满足在p中出现次数在\([l,r]\)之间,那么则称字符串t满足该限制。现在给一个字符串s,问它有多少个本质不同的子串满足所有10个限制。所有字符串长度<=50000


对于11个母串建立广义后缀自动机,然后再拓扑排序即可求出广义后缀自动机上每个节点在各自母串中的出现次数,最后扫一遍即可判断

CF868D

题意:有n个字符串,m次操作,每次操作把两个字符串拼在一起,并询问这个新串的价值。定义一个新串的价值k为:最大的k,使得这个新串包含所有长度为k的01串(这样的字符串有\(2^k\)个)


首先考虑k最大有多少,因为每次合并两个已有字符串,可能造成额外贡献的长度为k的字符串最多只有k个,而最多只会经过100次合并,所以列出不等式可以知道k最大为10
也就是说虽然后面的字符串会很长,但我们只需要记录下他长度为10的前后缀即可处理合并的贡献,至于内部的贡献我们可以递归下去求
注意这个递归不是指数级的,因为可能会重复求解一个前面字符串本身,所以我们可以记忆化一下,这个递归就是线性的了

CF965E

题意:有n个字符串,对于每个字符串你可以挑一个前缀来代表它,但两个不同的字符串的代表前缀不能一样。现在你需要找出每个字符串的满足要求的代表前缀,并且让他们的长度总和最短。


将所有字符串建成一个Trie,然后先构造出一组可行解,也就是那些表示单词的节点
然后每次贪心选择一个深度最大的点尽可能往上移,用并查集加速

CF895D

题意:给定两个长度都为n的字符串a和b,保证a字典序小于b。问有多少个字符串c满足以下要求:(1)c字典序大于a,c字典序小于b (2)c中每个字母的出现次数与a中一模一样


ans=solve(b)-solve(a)-1
solve(b)指的是有多少个字符串字典序严格小于b
那么只需要O(n)枚举第一个不同的位置在哪里然后去计数即可

CF566A

题意:有一个完全二分图,左边n个点,右边n个点,每个点都有一个字符串,一条边权等于其所连接两点的字符串的最长公共前缀,求最优匹配。


将右边的字符串建成Trie树,然后左边的按照一定顺序在Trie上匹配
那么按照什么顺序呢?
显然,我们肯定优先选择目前能在Trie树上匹配深度最多的字符串进行优先匹配;注意我们完成一次匹配之后,Trie树形态会改变,所以每个点在Trie树上能匹配到的最深位置是会改变的,需要动态去维护。

CF1017E

题意:给两个凸包,问它们能否通过平移和旋转同构。


按顺序求出它们的边长序列和角度序列,看是否循环同构即可(KMP或者哈希)
对于角度序列,注意到不能用叉积来判断,因为叉积的本质是\(sin(x)\),这个函数在\([0, \pi]\)中不是单调的
所以要利用点积求出该角的\(cos\)值

CF17E

题意:给一个字符串,求有多少对相交的回文子串,答案对质数取模。


考虑求反面,求出有多少对回文子串是不相交的
正反两边回文树求出以i结束的回文子串个数,以i开头的回文子串个数
然后后面做个后缀和,枚举前面的回文子串,就能求出来不相交的对数
但这题卡空间,于是要用马拉车解决这个问题
首先通过马拉车求出以i为结束的回文子串个数,然后枚举i,计算以i为回文中心的回文串的贡献,很明显这是一个前缀和的区间和,可以前缀和再前缀和维护一下到O(n)复杂度

转载于:https://www.cnblogs.com/wmrv587/p/10055940.html

Chelly的串串专题相关推荐

  1. ACM训练赛--递推专题

    1001: Buy the Ticket Problem Description The "Harry Potter and the Goblet of Fire" will be ...

  2. Microsoft .Net Remoting系列专题之二:Marshal、Disconnect与生命周期以及跟踪服务

    Microsoft .Net Remoting系列专题之二 一.远程对象的激活 在Remoting中有三种激活方式,一般的实现是通过RemotingServices类的静态方法来完成.工作过程事实上是 ...

  3. CS131专题-6:图像特征(Blob检测、LoG算子、Harris-Laplacian)

    本专题介绍的技术应用已不广,但是这些有利于理解SIFT算法的原理,也有助于感悟CV传统技术的发展变迁,以及解决问题的思路. 速记要点: blob是什么:blob是描述图像中局部区域的平均像素强度的特征 ...

  4. CS131专题-4:拟合(最小二乘、RANSAC、霍夫变换)

    本专题目的:了解最小二乘.RANSAC.霍夫变换这3个算法的基本原理,能够做到脱口而出,并从零编程实现. 目录 1 前言 2 最小二乘 2.1 基本原理 2.2 求解方法 3 RANSAC 算法 3. ...

  5. CS131专题-3:图像梯度、边缘检测(sobel、canny等)

    目录 1 前言 2 图像梯度 2.1 梯度公式的离散形式 2.2 图像的梯度表示 2.3 图像梯度的最简单计算方法 2.4 直接应用梯度找图像边缘的问题以及解决方案 3 边缘检测 3.1 好的边缘检测 ...

  6. CS131专题-2:高斯核、噪声、滤波

    目录 1 高斯核 1.1 一维定义 1.2 二维定义 1.2.1 应用高斯核的过程 1.2.2 不同σ值的高斯核情况 1.2.3 不同核宽度情况 1.2.4 高斯核(滤波)特性 1.2.5 使用高斯核 ...

  7. 图的算法专题——最小生成树

    概要: Prim算法 Kruskal算法 1.Prim算法 算法流程: (1)对图G(V,E)设置集合S来存放已被并入的顶点,然后执行n次(2)(3) (2)每次从未并入顶点集合中选择与集合S最近的一 ...

  8. [C#]网络编程系列专题二:HTTP协议详解

    转自:http://www.cnblogs.com/zhili/archive/2012/08/18/2634475.html 我们在用Asp.net技术开发Web应用程序后,当用户在浏览器输入一个网 ...

  9. 织梦在哪写html,织梦专题页去.html后缀的方法

    很多人在使用DedeCMS建站的过程中,创建专题页的时候,会发现生成的专题页页面是类似于http://www.xxx.com/zhuanti.html这种,后缀带有.html,这个问题在网上看了不少教 ...

  10. v-html解析的相对地址img 显示不出来_人工智能专题作品解析——APPInventor安卓应用开发AI图像识别简单应用...

    人工智能专题作品解析-- APPInventor安卓应用开发 <AI图像识别简单应用> 本程序使用APPInventor 2019桌面板. 一.思路 平时忙于工作和学习,很少涉猎其它领域的 ...

最新文章

  1. LeetCode简单题之公平的糖果交换
  2. python用tsne降维图像_python代码实现TSNE降维数据可视化教程
  3. sql排名名次分页mysql_mysql 实现排名及中文排序实例[分页累加行号]
  4. cclink 和发那科机器人_FANUC机器人焊枪工具坐标系设定
  5. 信息学奥赛一本通(1227:Ride to Office)
  6. python颜色识别原理_用opencv-python实现颜色检测
  7. AngularJS学习之旅—AngularJS 模块(十五)
  8. php的字符串操作,PHP 字符串操作
  9. 计算机专业基础 -- Spring系列框架相关基础知识
  10. 普元云计算-你适合微服务么:实施微服务的4个先决条件和重点工作
  11. ghost还原固态硬盘_解决方法:SSD可以使用Ghost软件吗?最后说清楚了
  12. c语言头文件写法,C语言头文件正确写法
  13. Web课设——HIS系统
  14. 【树莓派】安装C#运行环境
  15. 后盾网php多少钱_后盾网向军老师PHP视频教程
  16. 解决scrapy下载小说乱序
  17. pow函数python_pythonpow函数怎么用
  18. 保利威视 获取回放API接口
  19. 313day(服务器的一些问题)
  20. 如何批量修改文件名、照片文件名

热门文章

  1. 拓端tecdat|matlab使用Copula仿真优化市场风险数据VaR分析
  2. hibernate教程笔记2
  3. word图表自动编号
  4. pytorch ImageFolder
  5. 使用U-Net分割方法进行癌症诊断
  6. 【Caffe安装】ImportError: No module named caffe 的解决方案
  7. sklearn 自定义函数转化器FunctionTransformer使用
  8. 聚类算法(K-Means和DBSCAN)
  9. 神经网络的理解和计算
  10. plt.imshow与cv2.imshow显示颜色问题