Responsive image

问题 2615 --Hash

2615: Hash

时间限制: 2 Sec  内存限制: 512 MB
提交: 0  解决: 0
[提交][状态][讨论版][命题人:]

题目描述

Bellalabella 最近学习了 Hash 算法。简单来说,对于一个字符串 S = s1s2 . . . s|S|,定义其 Hash 函数为
由于 Bellalabella 十分喜欢河南的各种美食以及河南的队友(确信),因此她将字符串 S 的字符限定在了 a, e, h, n 四个字母,相对应地有 g(a) = 1, g(e) = 2, g(h) = 3, g(n) = 4。
现在 Bellalabella 有一个仅包含 h, e, n, a 四个字母的字符串 T = t1t2 . . . t|T| 且字符串 T 是一个环,Bellalabella 想将其分成若干个子串。
形式化地说,Bellalabella 可以选择任意个数个分割点 1 ≤ a1 < a2 < · · · < am ≤ |T|,这 m 个分割点可以将 T 分割成 m 个子串 T[ai mod |T| + 1, ai mod m+1],其中 T[L, R] = tLtL+1 . . . tR,特别地当L > R 时 T[L, R] = tLtL+1 . . . t|T|t1t2 . . . tR。
例如 T = henan,分割点为 1, 2, 4,则串 T 会被分割为 e, na, nh。
Bellalabella 将串 T 分成若干个子串后,每个子串都有自己的 Hash 值。Bellalabella 想知道在不同分割方法下,所有子串 Hash 值之和最大为多少。




输入描述

仅一行,一个仅包含 a, e, h, n 四个字母的字符串 T(1 ≤ |T| ≤ 2 × 105)。

输出描述

输出仅一行,包含一个整数,表示字符串 |T| 在不同分割方法下,所有子串 Hash 值之和的最大值。

样例输入

henan

样例输出

3785504

提示


输入字符串 T 为 henan,当分割点为 4 时被分割成 nhena,Hash 值之和为 3785504 取到最大值。

来源

[提交][状态]
ACM算法攻关部