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__方法是调用_ ...
最新文章
- 中国象棋人机博弈程序(扁平化棋局) C语言实现
- 贪心算法--会场安排问题
- web页面事件无响应,元素点击不到
- 实践hibernate的应用——struts2+hibernate的简单学生信息管理
- 时空大数据实践之GeoWave安装部署实践
- Boring Partition(CF-239D)
- 【C语言】创建一个函数,利用该函数将两个字符串连接起来
- Seata-Server安装_以及工作原理---微服务升级_SpringCloud Alibaba工作笔记0058
- ebc是什么意思_什么是亚马逊EBC,EBC有什么用?
- 华硕主板bios通电自启设置_求各种主板通电自动开启的设置?
- Win Phone 8 Emulator启动错误:提示无法创建虚拟机,Xde找不到主机的IPv4地址
- 微信小程序轮播图实现
- AXI FULL协议学习与仿真
- 18. --plic--=--ply--=--pli--=--ple--=--plex--=--plo-- to fold 倍,重,折叠 (词19、20)
- poj 4105 拯救公主(bfs+二进制状态压缩)
- java 几种生成海报的方式
- python pip 连接超时,使用国内源下载
- 微信小程序,不可不知的一二三四
- Facebook技术探究:Delos中的虚拟共识机制
- android .trace 文件,android - 了解Android应用程序的.trace文件 - SO中文参考 - www.soinside.com...
热门文章
- Spring PropertyPlaceholderConfigurer Usage - 使用系统变量替换spring配置文件中的变量
- 继承性和层叠性 权重 盒模型 padding(内边距) border(边框) margin 标准文档流 块级元素和行内元素...
- Redis数据库的管理
- STM8S103 PB4和PB5
- Jquery plugin template POPUP Plugin
- VirtualBox下Ubuntu利用桥接方式上网
- 常用 API 函数(5): 文本和字体函数
- WCF 使用证书认证 方法
- python中requests的用法总结
- python 上传文件下载图片