#4447. [Scoi2015] 小凸解密码

[Scoi2015] 小凸解密码

题目描述

小凸得到了一个密码盘,密码盘被等分成N个扇形,每个扇形上有一个数字(0~9),和一个符号(“+”或"") 密码盘解密的方法如下: 首先,选择一个位置开始,顺时针地将数字和符号分别记在数组A和数组C巾 解密的方法如下 B0=A0 当x>0时: 若Cx为“+”,Bx=(Ax+Ax-1)%10,注意:x-1是下标值 若Cx为“”,Bx= (Ax×Ax-1)%10,注意:x-1是下标值 操作完成后,可以得到一个长度为n的数组B,然后以B0为起点将B数组顺时针写成一个环,解密就完成 了,称得到的环为答案环。 现在小凸得到了一份指令表,指令表上有2种操作。 一种指令是修改操作,即改变原来密码盘上一个位置的数字和符号。 另一种指令是询问操作,具体如下: 首先从指令给出的位置开始完成解密,得到答案环。 答案环上会有一些0连在一起,将这些连在一起的0称为零区间,找出其中距离B0最远的那个零区间,输 出这个距离。 零区问和B0的距离定义为:零区问内所有0到B0距离中的最小值。

输入格式

第1行包含2个整数n,m,代表密码盘大小和指令个数 接下来n行,每行包含1个整数和1个字符,按顺时针顺序给出了密码盘上的数组和符号 接下来m行,依次给出指令 每行第1个整数代表指令类型 若第1个墼数为1,代表本行对应指令为修改操作,之后依次有2个整数pos,num和1个字符opt,分别 代表修改的位置,以及修改后该位置的数字和字符 若第1个整数为2,代表本行对应指令位询问操作,之后有1个整数pos,代表本次操作中解密的开始位置 密码盘上的位置标号为0到n-l 数据保证合法,即数据中0≤pos<N,0≤num≤9,opt为“+”或“*”

输出格式

对于每个询问操作1行,输出答案,若答案环上没有0,输出-1

5 8
0 *
0 *
0 *
0 *
0 *
2 0
1 0 1 +
1 2 1 +
2 3
1 1 1 +
1 3 1 +
1 4 1 +
2 4

0
2
-1

提示

第1个询问,答案环为[0,0,0,0,0],仅有1个零区间,且B0在其中,所以距离是0 对于第2个询问,答案环为[0,0,1,0,l],有2个零区间,(0,1)和B0距离是o,(3,3)和B0距离是2,故答案为2 对于第3个询问,答案环为[1,2,2,2,2],没有零区间,答案是-1 对于100%数据,5 <=n,m≤10^5

题目来源

没有写明来源