luogu#P11401. [Code+#8 初赛] 普勒亚

[Code+#8 初赛] 普勒亚

题目背景

搬运自 Code+ #8 初赛

题目描述

魔法少女小七得到了一个神奇的长度为 nn 的字符串 ss,每个位置对应有一个魔法值 aia_i。每次她可以使用一个长度为 ll 的子串作为咒语。对于长度为 ll 的咒语 tt,它的魔力是它在 ss 中出现的每个位置的右端点 posjpos_j(即 i[0,l), sposji=tli\forall i \in [0,l),\ s_{pos_j-i}=t_{l-i})的魔法值 aposja_{pos_j} 从左往右连成的序列的前缀最大值个数。

对于每个 i[1,n]i \in [1,n],小七想知道 ss 中所有长度为 ii 的咒语(两个咒语不同当且仅当其对应的字符串内容不同)的魔力之和。你能帮帮她吗?她会给你一个开心魔法作为报酬!

前缀最大值:对于序列 WW 来说 WiW_i 是前缀最大值当且仅当对于任何 j<ij<i 都有 Wj<WiW_j<W_i

输入格式

11 行,一个长度为 nn 的字符串 ss

22 行,nn 个正整数表示对应的魔法值 aia_i

输出格式

输出 11nn 个正整数,第 ii 个数表示长度为 ii 的咒语的魔法值之和。

ababa
5 2 3 4 1
3 3 2 2 1
aaaa
3 2 3 4
2 3 2 1

提示

【样例 #1 解释】

长度为 11 的子串有 ab 两种,分别构成序列 5 3 12 4,各自的前缀最大值个数为 1122

长度为 22 的子串有 abba 两种,分别构成序列 2 43 1,各自的前缀最大值个数为 2211

长度为 33 的子串有 ababab 两种,构成序列 3 14,各自的前缀最大值个数为 1111

长度为 44 的子串有 ababbaba 两种,构成序列 41 ,各自的前缀最大值个数为 1111

长度为 55 的子串有 ababa 一种,构成序列 1,前缀最大值个数为 11

【数据范围】

对于 20%20\% 的数据,n100n \le 100

对于另外 20%20\% 的数据,n5000n \le 5000

对于另外 20%20\% 的数据,ss 中只有字符 a

对于 100%100\% 的数据,保证 n100,000n \le 100,000ss 中只包含小写英文字母。