Codeforces Global Round 22 |
---|
Закончено |
Ваша задача состоит в том, чтобы поддерживать очередь содержащую строчные буквы Латинского алфавита со следующими операциями:
Изначально очередь пустая.
После каждой операции, вы должны посчитать число различных подстрок палиндромов в строке, которая получается соединением букв от начала к концу очереди.
Число различных подстрок палиндромов пустой строки равняется $$$0$$$.
Строка $$$s[1..n]$$$ длины $$$n$$$ является палиндромом, если $$$s[i] = s[n-i+1]$$$ для любого $$$1 \leq i \leq n$$$.
Строка $$$s[l..r]$$$ является подстрокой строки $$$s[1..n]$$$ для любого $$$1 \leq l \leq r \leq n$$$.
Две строки $$$s[1..n]$$$ и $$$t[1..m]$$$ различные, если выполняется как минимум одно из условий.
В первой строке содержится целое число $$$q$$$ ($$$1 \leq q \leq 10^6$$$), означающее число операций.
Далее следуют $$$q$$$ строк. Каждая строка содержит одну из операций.
Гарантируется, что операция «pop» не будет применяться к пустой очереди.
После каждой операции, выведите количество различных подстрок палиндромов в строке, представленной в очереди.
12 push a pop push a push a push b push b push a push a pop pop pop push b
1 0 1 2 3 4 5 6 5 4 3 4
Пусть $$$s_k$$$ это строка находящаяся в очереди после $$$k$$$-й операции, и пусть $$$c_k$$$ будет число различных подстрок палиндромов строки $$$s_k$$$. Следующая таблица иллюстрирует пример.
$$$k$$$ | $$$s_k$$$ | $$$c_k$$$ |
$$$1$$$ | $$$a$$$ | $$$1$$$ |
$$$2$$$ | $$$\textsf{empty}$$$ | $$$0$$$ |
$$$3$$$ | $$$a$$$ | $$$1$$$ |
$$$4$$$ | $$$aa$$$ | $$$2$$$ |
$$$5$$$ | $$$aab$$$ | $$$3$$$ |
$$$6$$$ | $$$aabb$$$ | $$$4$$$ |
$$$7$$$ | $$$aabba$$$ | $$$5$$$ |
$$$8$$$ | $$$aabbaa$$$ | $$$6$$$ |
$$$9$$$ | $$$abbaa$$$ | $$$5$$$ |
$$$10$$$ | $$$bbaa$$$ | $$$4$$$ |
$$$11$$$ | $$$baa$$$ | $$$3$$$ |
$$$12$$$ | $$$baab$$$ | $$$4$$$ |
Стоит заметить, что
Название |
---|