luogu#P8406. [COCI2021-2022#6] Palindromi

[COCI2021-2022#6] Palindromi

题目描述

给你一个长度为 nn01\texttt{01} 序列,下标为 1,2,,n1,2,\dots,n。最初每个字符都代表了一个长度为 11 的字符串。在一次连接中,需要选择两个字符串 aabb,将它们删除后,换为字符串 abab,即在写下 aa 中的所有字符后写下字符串 bb 的所有字符。

nn 个初始字符串需要用 n1n-1 次连接操作连成一个字符串。第 ii 次选择的字符串用一个下标对 (ai,bi)(a_i,b_i) 描述,表示要连接的字符串是包含下标为 aia_i 的字符的和包含下标为 bib_i 的字符的。保证下标为 aia_ibib_i 的字符不在同一字符串中。

一些字符串 ww 的回文值被定义为 ww 中不同回文子串的个数。我们定义回文串为从左到右读和从右到左读相同的字符串。一个字符串的子串被定义为可以从字符串开头和(或)结尾开始删去一个或多个字符得到的字符串。

对于每次连接操作,输出每次连成的字符串的回文值。

输入格式

第一行包含一个整数 nn,表示字符个数。

第二行一个长度为 nn0101 字符串,表示初始字符串。

接下来 n1n-1 行,每行两个整数 aia_ibib_i,表示第 ii 次连接操作。

输出格式

输出 n1n-1 行,表示每次连接操作得到的字符串的回文值。

3
010
1 2
2 3
2
3
5
00111
4 1
1 5
2 1
3 1
2
3
4
5

8
10010000
7 5
4 2
3 6
1 3
6 8
5 3
1 2
2
2
2
3
4
6
8

提示

样例解释3:

在每个连接之后新创建的字符串是: 00,10,00,100,1000,001000\tt 00, 10,00, 100, 1000,001000 00100010\tt 00100010

它们各自的回文值在样例输出中给出。例如 00100010\tt 00100010 的回文值是 88,因为字符串包含88回文子字符串: 0,00,000,10001,0100010,1010\tt 0, 00, 000, 10001,0100010, 10100010000100

数据范围:

对于 9%9\% 的数据:1n1001\le n\le100

对于 18%18\% 的数据:1n10001\le n\le1000

对于 27%27\% 的数据:ai=1,bi=i+1a_i = 1, b_i = i + 1

对于 100%100\% 的数据:1n1051\le n\le10^51ai,bin1\le a_i, b_i\le n

本题分值与 COCI 2021-2022#6 分值相同,满分 110110