luogu#P5821. 【L&K R-03】密码串匹配

【L&K R-03】密码串匹配

题目背景

众所周知,小 L 很喜欢用 123321123321 做密码。每次登陆 Codeforces,都会看见显眼的一行提示:

Your password is extremely weak or has been leaked . Please, change it ASAP. 
(see https://haveibeenpwned.com/)

题目描述

在被机惨之后,小 L 痛定思痛,决定使用更安全的密码。小 L 设计出了一个可能长达 200,000200,000 位的仅由小写字母构成的密码,并保证没有人能记住,猜出或试出(包括小 L 自己)。

为了防止自己忘记整串密码(不用防止了,已经忘记了),小 L 编写了一个程序,可以存储小 L 的密码串 TT,但是不能直接输出(因为这个程序可能会被他人使用),小 L 第一次会根据记忆还原出长度为 ll 的一个字符串 PP,后面会根据程序的输出修改 PP 的某一位,这个程序可以求出当前猜测串 PP 与密码串 TT 的相同长度的字串的 失配度

定义字符 a 的值为 11,字符 b 的值为 22,以此类推,字符 z 的值为 2626。定义两个字符串 s,ts,t 的失配度为对应位置上的值相减后的平方。

现在,小 L 想知道他的程序是否正确,请你也编写一个类似的程序。

输入格式

输入的第一行为三个数 n,l,mn,l,m,分别表示密码串 TT 的长度 nn,猜测串 PP 的长度 ll,和操作次数 mm

接下来的两行有两个字符串,分别为 TTPP

接下来的 mm 行,每行的第一个整数为 opop,表示操作的类型:

op=1op=1,接下来有一个整数 xx,表示要求 PP 和从 TT 的第 xx 位开始长度为 ll 的字串的失配度;

op=2op=2,接下来有一个整数 xx 和一个字符 cc,表示修改 PP 的第 xx 位,使其等于 cc

输出格式

对于每个 11 操作,输出一行,为所求值。

8 5 3
iamangry
anger
1 4
2 2 m
1 2
218
238

提示

请注意本题特殊的时间限制。

本题数据规模大,请注意常数优化。

为了防止题目过于卡常,本题 提供 八聚氧 ,直接加在代码最前提交即可。

本题中所有编号从 11 开始。

  • Subtask #1:3030 分,保证 n,m5×103n,m\le 5\times 10^3
  • Subtask #2:3030 分,保证没有 22 操作;
  • Subtask #3:4040 分,保证 n,m2×105n,m\le 2\times 10^5

对于 100%100\% 的数据,保证 1ln,1x1\le l\le n,1\le x

对于所有 11 操作,保证 x1+lnx-1+l\le n

对于所有 22 操作,保证 xlx\le l

样例解释

$(a-a)^2+(n-n)^2+(g-g)^2+(r-e)^2+(y-r)^2=13^2+7^2=218$。

$(a-a)^2+(m-m)^2+(a-g)^2+(n-e)^2+(g-r)^2=6^2+9^2+11^2=238$。