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

[Code+#8 初赛] 普勒亚

背景

搬运自 Code+ #8 初赛。

题目描述

魔法少女小七得到了一个神奇的长度为 nn 的字符串 ss,每个位置对应有一个魔法值 aia_i。每次她可以使用一个长度为 ll 的子串作为咒语。对于长度为 ll 的咒语 tt,它的魔力是它在 ss 中出现的每个位置的右端点 posjpos_j(即 ∀i∈[0,l), sposj−i=tl−i\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。

输出格式

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

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

提示

【样例 #1 解释】

长度为 11 的子串有 a 和 b 两种,分别构成序列 5 3 1 和 2 4,各自的前缀最大值个数为 11 和 22。

长度为 22 的子串有 ab 和 ba 两种,分别构成序列 2 4 和 3 1,各自的前缀最大值个数为 22 和 11。

长度为 33 的子串有 aba 和 bab 两种,构成序列 3 1 和 4,各自的前缀最大值个数为 11 和 11。

长度为 44 的子串有 abab 和 baba 两种,构成序列 4 和 1 ,各自的前缀最大值个数为 11 和 11。

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

【数据范围】

对于 20%20\% 的数据,n≤100n \le 100。

对于另外 20%20\% 的数据,n≤5000n \le 5000。

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

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