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)复杂度

Chelly的串串专题的更多相关文章

  1. 2016年中国微信小程序专题研究报告

    2016年12月29日,全球领先的移动互联网第三方数据挖掘和分析机构iiMedia Research(艾媒咨询)权威首发<2016年中国微信小程序专题研究报告>. 报告显示,82.6%手机 ...

  2. [.NET领域驱动设计实战系列]专题二:结合领域驱动设计的面向服务架构来搭建网上书店

    一.前言 在前面专题一中,我已经介绍了我写这系列文章的初衷了.由于dax.net中的DDD框架和Byteart Retail案例并没有对其形成过程做一步步分析,而是把整个DDD的实现案例展现给我们,这 ...

  3. 转载:《.NET 编程结构》专题汇总(C#)

    <.NET 编程结构>专题汇总(C#) - M守护神 - 博客园http://www.cnblogs.com/liusuqi/p/3213597.html 前言     掌握一门技术,首要 ...

  4. 设计模式(Design Pattern)系列之.NET专题

    最近,不是特别忙,重新翻了下设计模式,特地在此记录一下.会不定期更新本系列专题文章. 设计模式(Design pattern)是一套被反复使用.多数人知晓的.经过分类编目的.代码设计经验的总结. 使用 ...

  5. arcgis api for flex之专题图制作(饼状图,柱状图等)

    最近公司给我一个任务,就是利用arcgis api for flex实现在地图上点(业务数据)直接显示饼状图以及柱状图的专题图制作,而不是通过点击点显示气泡窗口的形式来实现,这个公司已经实现了. 经过 ...

  6. supermap iclient for js 标签专题图(服务端)

    <!DOCTYPE><html> <head> <meta http-equiv="Content-Type" content=" ...

  7. 【原】Spark学习总结-六个专题

    最近从hadoop转向Spark了,学了一段时间了,准备写个专题,主要写pySpark的应用,主要计划是: 主题 内容概要 聚类(5.6) 1.几种常用的聚类算法:2.pyspark中聚类算法的应用( ...

  8. 【ESRI论坛6周年征文】ArcEngine注记(Anno/ Label/Element等)处理专题 -入门篇

    原发表于ESRI中国社区,转过来.我的社区帐号:jhlong http://bbs.esrichina-bj.cn/ESRI/viewthread.php?tid=122097 ----------- ...

  9. Endnote专题之--output style相关问题

    Endnote专题之--output style相关问题 1. 打开output style, Edit--->Output Styles--->选择要编辑的某个style模板,如下面的E ...

随机推荐

  1. 【HIHOCODER 1403】后缀数组一·重复旋律(后缀数组)

    描述 小Hi平时的一大兴趣爱好就是演奏钢琴.我们知道一个音乐旋律被表示为长度为 N 的数构成的数列. 小Hi在练习过很多曲子以后发现很多作品自身包含一样的旋律.旋律是一段连续的数列,相似的旋律在原数列 ...

  2. POJ:1328-Radar Installation

    Radar Installation Time Limit: 1000MS Memory Limit: 10000K Description Assume the coasting is an inf ...

  3. Linux学习-登录档的轮替(logrotate)

    rsyslogd 利用的是 daemon 的方式来启动的, 当有需求的时候立刻就会被执行的,但是 logrotate 却是在规定的时间到了之后才来进行登录档的轮 替, 所以这个 logrotate 程 ...

  4. dict 字典的常用操作

    #dict 字典的常用操作: id_db.get() #获取 id_db.update() #更新(覆盖)字典 id_db.values() #打印字典里所有的values id_db.keys() ...

  5. 大咖分享 | 一文解锁首届云创大会干货——上篇(文末附演讲ppt文件免费下载)

    日,第一届网易云创大会在杭州国际博览中心举办,本次大会由杭州滨江区政府和网易主办,杭州市两创示范工作领导小组办公室协办,网易云承办,以"商业匠心.技术创新"为主题,致力于打通技术创 ...

  6. iOS开发-NSLog不打印设置 Prefix

    首先在-Prefix.pch,文件里添加如下代码 #ifdef DEBUG #define NSLog(...) NSLog(__VA_ARGS__) #define debugMethod() NS ...

  7. rocketmq源码分析4-事务消息实现原理

    为什么消息要具备事务能力 参见还是比较清晰的.简单的说 就是在你业务逻辑过程中,需要发送一条消息给订阅消息的人,但是期望是 此逻辑过程完全成功完成之后才能使订阅者收到消息.业务逻辑过程 假设是这样的: ...

  8. python - 函数的相互调用 及 变量的作用域

    # -*- coding:utf-8 -*- '''@project: jiaxy@author: Jimmy@file: study_函数的相互调用及变量的作用域.py@ide: PyCharm C ...

  9. NVIDIA NVML Driver/library version mismatch

    sudo rmmod nvidia_drm sudo rmmod nvidia_modeset sudo rmmod nvidia_uvm sudo lsof /dev/nvidia* confirm ...

  10. [python工具][3]sublime常用配置 与操作指南

    https://github.com/jikeytang/sublime-text http://zh.lucida.me/blog/sublime-text-complete-guide/