luogu4715 「英语」Z 语言

博客讲述了Z语言的概念,其特点是字符集极大且每个单词由两两不同的字符组成。Z语言可以用于加密,但实现Z-KMP算法时遇到问题。文章通过一个字符串匹配问题解释了Z语言的匹配规则,并提供了输入输出格式及样例,涉及数据结构和算法的应用。
摘要由CSDN通过智能技术生成

http://www.elijahqi.win/archives/3774

题目背景
请大家注意,该题会无故 0 分。

请提交,赛后或者修好后会 Rej。

(OI 赛制(大雾

题目描述
英语是高考里最简单的一科了——至少对于小 F 来说是这样。

这一天,英语老师又在瘠义肥辞地讲着模拟题,而小 F 正玩弄着同学的电子词典。这个电子词典有一个特点,便是无法输入英文以外的字符,比如 naïve 只能为 naive,café 只能为 cafe。

小 F 非常讨厌这种设定。为了凸显这种设定的愚蠢之处,小 F 决定设计出一种字符集超大的语言——Z 语言,哪怕有时额外的字符并没有什么用。

这种语言的特点是:

字符集非常大,甚至可能有 2147483648(2 ^ {31})2147483648(231) 种字符;

每个单词由一系列两两不同的字符组成;

字符既能比较相同和不同,也能比较大小,因此之后我们用数字来表示 Z 语言中稀奇古怪的字符;

两个看起来完全不同的单词也可能是同一个单词,因为:只要两个单词中第 K 大的字符所在的位置相同,那么其实就是本质上相同的单词。例如 {1, 2, 3, 4, 5}{1,2,3,4,5} 与 {2, 3, 23, 233, 23333}{2,3,23,233,23333} 是相同的。(所以你可以用 Z 语言很方便地加密信息!)

现在,小 F 打算将 Z 语言应用到实际中。比如,他点开了一道电脑里的算法题:

给定两个字符串 A, BA,B ,求 BB 作为子串在 AA 中被匹配的次数。

小 F 当然知道这是一个可以用 KMP 解决的基础题。但是,他在用 Z 语言的匹配实现 Z-KMP 的时候遇到了问题,你能帮帮他吗?

为了验证你是不是真的明白小 F 在说什么,小 F 会修改 BB 串很多次来问你。可不准偷懒哦!

你的程序需要支持的操作详见输入输出格式。

输入输出格式
输入格式:

输入第一行两个整数 n, m, q(1 \leq n, m, q \leq 10 ^ 5)n,m,q(1≤n,m,q≤105) ,表示 A, BA,B 串的长度。

第二行 nn 个非负整数,第 ii 个表示 AA 串的第 ii 个字符 A_iAi​ (0 \leq A_i \leq 2147483647=2 ^ {31} - 1)(0≤Ai​≤2147483647=231−1) 。

第三行 mm 个非负整数,第 ii 个表示 BB 串的第 ii 个字符 B_iBi​ (0 \leq B_i \leq 2147483647=2 ^ {31} - 1)(0≤Bi​≤2147483647=231−1) 。

接下来 qq 行,每行两个正整数 x_i, c_ixi​,ci​ (1 \leq c_i \leq 2147483647=2 ^ {31} - 1)(1≤ci​≤2147483647=231−1) ,表示将 BB 串 x_ixi​ 位置上的字符由 B_{x_i}Bxi​​ 改为 c_ici​ 。

数据保证,任意时刻 AA 和 BB 均是满足前述要求的合法 Z 字符串。

输出格式:

在每次修改完成后,请输出 BB 作为子串在 AA 中被 Z-匹配 的次数。

输入输出样例
输入样例#1: 复制
5 3 2
11 7 5 3 2
3 2 1
2 5
1 6
输出样例#1: 复制
0
3
说明
样例 1 解释
在第一次修改后, {3, 5, 1}{3,5,1} 并不能被任何一个 AA 中的子串匹配上。

在第二次修改后, {6, 5, 1}{6,5,1} 能被 AA 中所有长度为 33 的串匹配上,原因是 A 是单调减的,而 B 也是单调减的,因此 AA 中所有长度为 33 的串与 BB 排名相同的处于相同位置。

子任务
子任务 1(31 \mathrm{pts}) : n, m \leq 100, q \leq 10001(31pts):n,m≤100,q≤1000 ;

  将事物的状态和行为用数学符号形式化表达的语言,为编写计算机程序和验证计算机程序的正确性提供依据,是软件工程中编码之前的规格说明语言。   Z语言是一种以一阶谓词演算为主要理论基础的规约语言,是一种功能性语言。形式化描述语言Z指的是著名数学家Zermelo,它是目前使用最广泛的一种形式化描述语言,在软件产业的一些大型项目中已经获得成功的应用,Z以带等词的一阶谓词逻辑ZF(Zermelo-Fraenkel,蔡梅罗-弗兰科尔)公理集合论为主要数学基础。在Z中有两种语言:数学语言和模式(Schema)语言。数学语言用来描述系统的各种特征:对象及其之间的关系。模式语言是一种半图形化的语言,它用来构造、组织形式化说明的描述、整理、封装信息块并对其命名以便可以重用这些信息块。通常,形式化说明的可读性都不太好,但由于Z采用半图形化的模式语言,能用一种比较直观、有条理的方式来表达形式化说明,这就改善了可读性。   Z语言是由牛津大学程序设计研究小组开发的一种形式语言,之后该小组与IBM的Hursley实验室合作,将Z语言用于IBM客户信息控制系统(Customer Information and Control System,CICS)的开发,使得最终的产品质量得到了全面的提高,所监测出的错误数量大大减少,并且整体开发费用降低了9%。在ISO指导下的国际标准化Z工作与2002年完成。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值