P5640 【CSGRound2】逐梦者的初心

题目背景

#### 注意:本题时限修改至 250ms,并且数据进行大幅度加强。本题强制开启 O2 优化,并且不再重测,请大家自己重新提交。 由于 Y 校的老师非常毒瘤,要求 zhouwc 在 csp 考前最后3天参加期中考,zhouwc 非常生气,决定消极考试,以涂完卡但全错为目标。现在 retcarizy 看 zhouwc 太可怜了,想要帮 zhouwc 解决一个问题,但他自己又太忙了,咕咕咕,于是就把问题甩给了你。

题目描述

给你一个长度为 $n$ 的字符串 $S$。 有 $m$ 个操作,保证 $m\le n$。 你还有一个字符串 $T$,刚开始为空。 共有两种操作。 第一种操作: 在字符串 $T$ 的末尾加上一个字符。 第二种操作: 在字符串 $T$ 的开头加上一个字符。 每次操作完成后要求输出有几个 $l \in [1,|T|]$ 满足以下条件: 对于 $\forall i \in [1,l]$ 有 $T_{|T|-l+i} \ne S_{i}$ Tip:字符串下标从 $1$ 开始。$|T|$ 表示 $T$ 的长度。

输入格式

第一行两个正整数 $n,m$。 第二行 $n$ 个正整数,用空格隔开,第 $i$ 个整数表示 $S_i$。 接下来 $m$ 行,每行两个数字 $opt,ch$,$opt=0$ 表示在 $T$ 的末尾加一个字符 $ch$,$opt=1$ 表示在 $T$ 的开头加一个字符 $ch$。

输出格式

共 $m$ 行,每行一个非负整数表示第 $m$ 操作后的输出。

说明/提示

注意:本题采用**捆绑测试**,只有当你通过一个 subtask 的所有点后,你才能拿到这个 subtask 的分数。 对于所有的数据 $n \leq 10^6,m \leq 3.3333 \times 10^4,|\Sigma|\leq10^3,S_i \in [1,|\Sigma|]$。($\Sigma$ 表示字符集) subtask1($17\%$):$m \leq 333$。 subtask2($33\%$):$m \leq 3333$。 subtask3($20\%$):$|\Sigma|\leq2$。 subtask4($30\%$):无特殊条件。 #### 样例解释: 第一次操作后,$T=\texttt1$, $l=1$ 时 $T_1=S_1$,所以答案为 $0$。 第二次操作后,$T=\texttt{21}$, $l=1$ 时,$T_2=S_1$; $l=2$ 时,$T_1\ne S_1$,$T_2\ne S_2$,所以答案为 $1$。 第三次操作后,$T=\texttt{213}$, $l=1$ 时,$T_3\ne S_1$; $l=2$ 时,$T_2=S_1$; $l=3$ 时,$T_3=S_3$,所以答案为 $1$。