UOJ Logo Universal Online Judge

UOJ

#577. 【ULR #1】打击复读

附件下载 统计

为了提升搜索引擎的关键词匹配度以加大访问量,某些网站可能在网页中无意义复读大量关键词。

你设计了一种方法量化评价一个文本(字符串 s)的“复读程度”:

字符串 s 的下标从 1n 标号,第 i 个字符被赋予两个权值:左权值 wli右权值 wri ,代表该位置的重要度。

定义一个子串 s[l,r]左权值 vl(s[l,r]) 为:其在原串中各个匹配的左端点的左权值 wl 和;右权值 vr(s[l,r]) 为:其在原串中各个匹配的右端点的右权值 wr 和。这里 ts 中所有的匹配是 1ijn,s[i,j]=t,我们把这样的 ij 分别叫做一个匹配的左右端点。

定义一个子串 s[l,r] 的复读程度是它的左权值右权值的乘积,即 w(s[l,r])=vl(s[l,r])vr(s[l,r])

s 的“复读程度”定义为所有子串复读程度的和,即:

i=1|S|j=i|S|w(s[i,j]).

根据网站文本抽样的复读程度限流,就可以达到打击无意义复读行为的目的。

隔壁生命科学实验室正在分析跳蚤的基因序列。他们对基因的复读情况很感兴趣,于是顺便把这个锅丢给了你。

基因片段可以被视作字符集为 {A,T,G,C} 的字符串,你要求出给定的基因片段 S 的复读程度。

有些时候,由于新的科学发现,某个位置 u左权值 wlu 会相应修改为 v,修改过后你需要给出基因片段 S 的新的复读程度。

由于答案很大,你只需要输出答案对 264 取模后的结果。

输入格式

第一行一个正整数 n 表示基因片段长度,一个整数 m 表示操作次数。

第二行一个字符串 S 表示基因片段。

第三行 n 个整数 wli 表示左权值。

第四行 n 个整数 wri 表示右权值。

接下来 m 行,每行给出两个整数 ui,vi ,表示将位置 ui 的左权值 wlui 修改为 vi

输出格式

第一行输出一个整数,表示初始时 S 的复读程度对 264 取模后的结果。

接下来 m 行,第 i 行输出第 i 次操作后 S 的复读程度对 264 取模后的结果。

样例一

input

5 0
ATATA
1 2 3 4 5
1 2 3 4 5

output

550

样例二

input

10 5
ACGTAGCGAG
3 2 7 8 0 8 0 1 9 9
8 1 1 9 8 9 8 8 8 9
2 2
3 6
10 9
10 2
5 3

output

5427
5427
5260
5260
4504
4927

限制与约定

对于所有数据,满足 1n,m5×105,0wli,wri,vi<264,1uin

子任务编号 n wli,wri m 特殊性质 分值
1 100 105 100 10
2 105 0 数据随机生成 20
3 30
4 1.5×105 2641 5×105 20
5 5×105 20

时间限制4s

空间限制1GB

注意常数因子带来的程序效率上的影响。

下载

样例数据下载