Chelly的串串专题
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的串串专题的更多相关文章
- 2016年中国微信小程序专题研究报告
2016年12月29日,全球领先的移动互联网第三方数据挖掘和分析机构iiMedia Research(艾媒咨询)权威首发<2016年中国微信小程序专题研究报告>. 报告显示,82.6%手机 ...
- [.NET领域驱动设计实战系列]专题二:结合领域驱动设计的面向服务架构来搭建网上书店
一.前言 在前面专题一中,我已经介绍了我写这系列文章的初衷了.由于dax.net中的DDD框架和Byteart Retail案例并没有对其形成过程做一步步分析,而是把整个DDD的实现案例展现给我们,这 ...
- 转载:《.NET 编程结构》专题汇总(C#)
<.NET 编程结构>专题汇总(C#) - M守护神 - 博客园http://www.cnblogs.com/liusuqi/p/3213597.html 前言 掌握一门技术,首要 ...
- 设计模式(Design Pattern)系列之.NET专题
最近,不是特别忙,重新翻了下设计模式,特地在此记录一下.会不定期更新本系列专题文章. 设计模式(Design pattern)是一套被反复使用.多数人知晓的.经过分类编目的.代码设计经验的总结. 使用 ...
- arcgis api for flex之专题图制作(饼状图,柱状图等)
最近公司给我一个任务,就是利用arcgis api for flex实现在地图上点(业务数据)直接显示饼状图以及柱状图的专题图制作,而不是通过点击点显示气泡窗口的形式来实现,这个公司已经实现了. 经过 ...
- supermap iclient for js 标签专题图(服务端)
<!DOCTYPE><html> <head> <meta http-equiv="Content-Type" content=" ...
- 【原】Spark学习总结-六个专题
最近从hadoop转向Spark了,学了一段时间了,准备写个专题,主要写pySpark的应用,主要计划是: 主题 内容概要 聚类(5.6) 1.几种常用的聚类算法:2.pyspark中聚类算法的应用( ...
- 【ESRI论坛6周年征文】ArcEngine注记(Anno/ Label/Element等)处理专题 -入门篇
原发表于ESRI中国社区,转过来.我的社区帐号:jhlong http://bbs.esrichina-bj.cn/ESRI/viewthread.php?tid=122097 ----------- ...
- Endnote专题之--output style相关问题
Endnote专题之--output style相关问题 1. 打开output style, Edit--->Output Styles--->选择要编辑的某个style模板,如下面的E ...
随机推荐
- OpenCV中的图像形态学转换
两个基本的形态学操作是腐蚀和膨胀.他们的变化构成了开运算,闭运算,梯度等.下面以这张图为例 1.腐蚀 这个操作会把前景物体的边界腐蚀掉. import cv2 import numpy as np i ...
- eclipse使用技巧的网站收集——转载(三)
本文来自:https://www.cnblogs.com/jeffen/p/5965227.html,未经更改,尊重作者 工欲善其事,必先利其器.对于程序员来说,Eclipse便是其中的一个“器”.本 ...
- UVa - 1593 代码对齐(STL)
看上去十分麻烦的一道题,但是看了看别人的写法感觉大神们写的无比简单. 就是记一个每列单词的最大长度,然后剩下的事交给NB的iomanip头文件就好. stringsteam是一个神奇的东西. #inc ...
- 库函数的使用:POJ1488-TEX Quotes(getline()的使用)
TEX Quotes Time Limit: 1000MS Memory Limit: 10000K Total Submissions: 9385 Description TEX is a type ...
- Android开发工具——Android Studio调试技巧
.调试的两种方式 到目前,调试的相关基础我们已经介绍完了,但是不少同学对Android Studio中这两个按钮感到困惑:Debug和Attach process. 这里我们就简单介绍一下这两者的区别 ...
- luogu1169 [ZJOI2007]棋盘制作
悬线法 #include <iostream> #include <cstring> #include <cstdio> using namespace std; ...
- iOS开发-NSLog不打印设置 Prefix
首先在-Prefix.pch,文件里添加如下代码 #ifdef DEBUG #define NSLog(...) NSLog(__VA_ARGS__) #define debugMethod() NS ...
- python--命名规范及常见的数据类型
1.python的命名规范 (1)不能以数字开头,不能出现中文. (2)命名以字母开头,包含数字,字母(区分大小写),下划线. (3)不能包含关键字,见名知意. 2.python常见的数据类型 (1) ...
- AtCoder Regular Contest 064 F - Rotated Palindromes
Problem Statement Takahashi and Aoki are going to together construct a sequence of integers. First, ...
- angular2 通过指令限制输入
最近在写一个表单,有些输入框只能输入数字,单又不想每次写表单的时候,都要去验证输入的是不是数字, 那么就想到直接限制只能输入数字,通过指令实现 这里需要注意的是,不只更改DOM的值,如果input为数 ...