tyvj1068 STR
给你两个串A,B,可以得到从A的任意位开始的子串和B匹配的长度。
给定K个询问,对于每个询问给定一个x,求出匹配长度恰为x的位置有多少个。
N,M,K<=200000
字符串的处理,用KMP喽,首先求出模式串B的next[],然后进行一遍AB匹配,记录a[i]匹配的最大长度,那么如果a[i]可以匹配l[i]的长度,answer[i]表示匹配长度为i的串的数量,则answer[next[i]]的匹配长度也是满足answer[i]的,所以只要倒着循环一遍,把answer[next[i]]加到answer[i]中即可。这时的answer[i]包含了长度为i+1的情况,所以要输出answer[k]-answer[k+1].
1 program tyvj1068(input,output); 2 var 3 a,b : ansistring; 4 next,l : array[0..201000] of longint; 5 answer : array[0..201000] of longint; 6 i,j,x : longint; 7 n,m,k : longint; 8 ch : char; 9 begin10 readln(n,m,k);11 a:='';12 b:='';13 for i:=1 to n do14 begin15 read(ch);16 a:=a+ch;17 end;18 readln;19 for i:=1 to m do20 begin21 read(ch);22 b:=b+ch;23 end;24 readln;25 fillchar(next,sizeof(next),0);26 next[1]:=0;27 j:=0;28 for i:=2 to m do29 begin30 while (j>0)and(b[j+1]<>b[i]) do31 j:=next[j];32 if b[j+1]=b[i] then33 inc(j);34 next[i]:=j;35 end;36 j:=0;37 for i:=1 to n do38 begin39 while (j>0)and(b[j+1]<>a[i]) do40 j:=next[j];41 if b[j+1]=a[i] then42 inc(j);43 l[i]:=j;44 if j=m then45 j:=next[j];46 end;47 fillchar(answer,sizeof(answer),0);48 for i:=1 to n do49 inc(answer[l[i]]);50 for i:=n downto 1 do51 inc(answer[next[i]],answer[i]);52 for i:=1 to k do53 begin54 readln(x);55 writeln(answer[x]-answer[x+1]);56 end;57 end.
转载于:https://www.cnblogs.com/neverforget/archive/2012/03/27/2419621.html
tyvj1068 STR相关推荐
- Ubuntu16.04 pip3 install 报错 working_set.find(moduleOrReq) or require(str(moduleOrReq))[0]
1. 问题现象 Exception: Traceback (most recent call last):File "/usr/lib/python3/dist-packages/pip/b ...
- python中什么是字符举例说明_第20p,什么是字符串?Python中的str
原标题:第20p,什么是字符串?Python中的str 大家好,我是杨数Tos,这是<从零基础到大神>系列课程的第20篇文章,第二阶段的课程:Python基础知识:Python的字符串(上 ...
- TypeError: can only concatenate str (not “float“) to str
处错原因如下 就是print 的地方报错了,类型不一样引起的问题 处理这个问题有2种方法 方法1: 转换类型 pi = 3.14 print("当前的p=" + str(pi)) ...
- TypeError: can only concatenate str (not “int“) to str
出现问题原因如下 报错的地方告诉我了print 的地方报错了 类型不一样引起的问题 处理这个问题有2种方法 方法1: 转换类型 pi = 3 print("当前的p=" + str ...
- TypeError: cannot concatenate ‘str‘ and ‘list‘ objects
如下面的内容运行就会报错 list_a =[1, 2, 3, 4, 5] for i in list_a:print ("i的值为:"+i) 报错如下 处理方法把int 类型转为s ...
- 浅析Python中bytes和str区别
本博转载自:Chown-Jane-Y的浅析Python3中的bytes和str类型 Python 3最重要的新特性之一是对字符串和二进制数据流做了明确的区分.文本总是Unicode,由str类型表示, ...
- python中 str 和 repr_python repr()与str()区别总结
python中,用于将某一类型的变量或者常量转换为字符串对象的方法有两种,即repr()和str().但是他们在定义.面向对象.返回处理方式.字符串处理和输出目的都有很大的不同,本文将做详细介绍. 1 ...
- python 去除str的引号 去除括号_Python基础教程:运算符以及数据类型解析
运算符 一.算数运算: 二.比较运算: 三.赋值运算 四.逻辑运算 五.成员运算 基本数据类型 一.Number(数字) Python3中支持int.float.bool.complex. 使用内置的 ...
- Python中自定义类如果重写了__repr__方法为什么会影响到str的输出?
这是因为Python3中,str的输出是调用类的实例方法__str__来输出,如果__str__方法没有重写,则自动继承object类的__str__方法,而object类的__str__方法是调用_ ...
最新文章
- MLPerf Inference 0.7应用
- ​“手把手撕LeetCode题目,扒各种算法套路的裤子”
- 忽略这一点,人工智能变人工智障!
- elgamal java_ElGamal - 源码下载|系统编程|加密解密|源代码 - 源码中国
- IMT-2030(6G)推进组发布《6G总体愿景与潜在关键技术》白皮书
- Scrum 项目1.0 2.0 3.0 4.0 5.0 6.0 7.0
- boost::hana::power用法的测试程序
- [51nod] 1301 集合异或和
- xxx定律-poj-3782
- 工作388-jq返回实例
- java用netty做tcpserver接收c++消息_netty案例,netty4.1基础入门篇四《NettyServer收发数据》...
- RMAN duplicate恢复数据库报错RMAN-06054问题处理
- HDU4612+Tarjan缩点+BFS求树的直径
- go语言读取文件的方法-1
- 云计算 码率适配限速_5G 成熟后,带宽足够且云计算力够大,会不会对 PC 的升级需求放缓?...
- 点分十进制表示的字符串转换为 unsigned int 整型数值
- 易行长指出了利率市场化”最后一枪“
- coreldraw橙子怎么画_CorelDRAW(CDR)设计绘制质感的橙子和冰块实例教程
- 中国被爱可以在线WAP站点首页源代码
- 2022国际数维杯C题题解:利用大脑结构特征和认知行为特征诊断阿尔茨海默病