C0393 [NOI2015Day2-B]品酒大会

内存限制:512 MB 时间限制:1000 ms

题目描述

一年一度的“幻影阁夏日品酒大会”隆重开幕了。大会包含品尝和趣味挑战两个环节,分别向优胜者颁发“首席品酒家”和“首席猎手”两个奖项,吸引了众多品酒师参加。

在大会的晚餐上,调酒师Rainbow调制了$𝑛$杯鸡尾酒。这$n$杯鸡尾酒排成一行,其中第$𝑖$杯酒$(1 ≤ 𝑖 ≤ 𝑛)$被贴上了一个标签$𝑠_𝑖$,每个标签都是26个小写英文字母之一。设$𝑆𝑡𝑟(𝑙, 𝑟)$表示第$𝑙$杯酒到第$𝑟$杯酒的$𝑟 − 𝑙 + 1$个标签顺次连接构成的字符串。若$𝑆𝑡𝑟(𝑝,𝑝𝑜) = 𝑆𝑡𝑟(𝑞,𝑞𝑜)$,其中$1 ≤ 𝑝 ≤ 𝑝𝑜 ≤ 𝑛,1 ≤ 𝑞 ≤ 𝑞𝑜 ≤𝑛, 𝑝 \ne 𝑞, 𝑝𝑜 − 𝑝 + 1 = 𝑞𝑜 − 𝑞 + 1 = 𝑟$,则称第$𝑝$杯酒与第$𝑞$杯酒是“𝑟相似”的。当然两杯“$𝑟$相似”$(𝑟 > 1)$的酒同时也是“1相似”、“2相似”、......、“$(𝑟 − 1)$相似”的。特别地,对于任意的$1 ≤ 𝑝, 𝑞 ≤ 𝑛,𝑝 \ne 𝑞$,第$𝑝$杯酒和第$𝑞$杯酒都是“0相似”的

在品尝环节上,品酒师Freda轻松地评定了每一杯酒的美味度,凭借其专业的水准和经验成功夺取了“首席品酒家”的称号,其中第$𝑖$杯酒$(1 ≤ 𝑖 ≤ 𝑛)$的美味度为$𝑎_𝑖$。现在Rainbow公布了挑战环节的问题:本次大会调制的鸡尾酒有一个特点,如果把第$𝑝$杯酒与第$𝑞$杯酒调兑在一起,将得到一杯美味度为$𝑎_𝑝𝑎_𝑞$的酒。现在请各位品酒师分别对于$𝑟 = 0,1,2, ⋯ , 𝑛 − 1$,统计出有多少种方法可以选出2杯“$𝑟$相似”的酒,并回答选择2杯“$𝑟$相似”的酒调兑可以得到的美味度的最大值。

输入格式

第1行包含1个正整数$𝑛$,表示鸡尾酒的杯数。

第2行包含一个长度为$𝑛$的字符串𝑆,其中第$𝑖$个字符表示第$𝑖$杯酒的标签。

第3行包含$𝑛$个整数,相邻整数之间用单个空格隔开,其中第$𝑖$个整数表示第$𝑖$杯酒的美味度$𝑎_𝑖$。

输出

包括$𝑛$行。第$𝑖$行输出2个整数,中间用单个空格隔开。第1个整数表示选出两杯“$(𝑖 − 1)$相似”的酒的方案数,第2个整数表示选出两杯“$(𝑖 − 1)$相似”的酒调兑可以得到的最大美味度。若不存在两杯“$(𝑖 − 1)$相似”的酒,这两个数均为0。

样例

样例输入 1

10 ponoiiipoi 2 1 4 7 4 8 3 6 4 7

样例输出 1

45 56 10 56 3 32 0 0 0 0 0 0 0 0 0 0 0 0 0 0

样例输入 2

12 abaabaabaaba 1 -2 3 -4 5 -6 7 -8 9 -10 11 -12

样例输出 2

66 120 34 120 15 55 12 40 9 27 7 16 5 7 3 -4 2 -4 1 -4 0 0 0 0

提示

【样例说明1】

用二元组$(𝑝, 𝑞)$表示第$𝑝$杯酒与第$𝑞$杯酒。

0相似:所有45对二元组都是0相似的,美味度最大的是8 × 7 = 56。

1相似:(1,8) (2,4) (2,9) (4,9) (5,6) (5,7) (5,10) (6,7) (6,10) (7,10),最大的8 × 7 = 56。

2相似:(1,8) (4,9) (5,6),最大的4 × 8 = 32。没有3,4,5, ⋯ ,9相似的两杯酒,故均输出0。

【数据规模与约定】

所有测试数据的范围和特点如下表所示

屏幕快照 2019-06-04 下午8.43.15.png