QOJ.ac

QOJ

実行時間制限: 1 s メモリ制限: 512 MB 満点: 100 難易度: [表示] ハック可能 ✓

#6759. Рядок

統計

Y — студент університету, який нещодавно почав досліджувати задачі про рядки.

Він ознайомився з такими означеннями:

  • Для рядка $s[1:n]$ довжини $n$ підрядок $s[l:r]$ ($1\le l\le r\le n$) — новий рядок, отриманий послідовним з'єднанням символів $s[l],s[l+1],\ldots,s[r]$.
  • Для рядка $s[1:n]$ довжини $n$ результат розвороту $R(s)$ — рядок, отриманий послідовним з'єднанням $s[n],s[n-1],\ldots,s[1]$, тобто записом рядка у зворотному порядку.
  • Для двох рядків $a[1:n],b[1:n]$ довжини $n$ кажемо, що $a$ лексикографічно менший за $b$, тоді й лише тоді, коли існує $1\le i\le n$, для якого $a[j]=b[j]$ для всіх $1\le j<i$ та $a[i]<b[i]$.

Ознайомившись із цими означеннями, Y придумав таку задачу:

Задано рядок $s[1:n]$ довжини $n$ і $q$ запитів. Кожен запит задає два параметри $i,r$. Потрібно визначити кількість значень $l$, які задовольняють такі умови:

  • $1\le l\le r$.
  • $s[i:i+l-1]$ лексикографічно менший за $R(s[i+l:i+2l-1])$.

Y просить вас допомогти розв'язати цю задачу.

Вхідні дані

Дані зчитуються з файлу string.in.

Задача містить кілька наборів тестових даних.

Перший рядок містить два цілі числа $c,t$ — номер тесту та кількість наборів даних відповідно. Значення $c=0$ означає, що тест є прикладом.

Далі послідовно подано кожен набір даних. Для кожного набору:

Перший рядок містить два додатні цілі числа $n,q$ — довжину рядка та кількість запитів.

Другий рядок містить рядок $s$ довжини $n$, що складається лише з малих літер.

Кожен із наступних $q$ рядків містить два додатні цілі числа $i,r$ й описує один запит. Гарантується $i+2r-1\le n$.

Вихідні дані

Результати виводяться до файлу string.out.

Для кожного запиту кожного набору даних виведіть окремий рядок з одним цілим числом — кількістю значень $l$, які задовольняють умови.

Приклади

Вхідні дані 1

0 2
9 3
abacababa
1 4
2 4
3 3
9 3
abaabaaba
1 4
2 4
3 3

Вихідні дані 1

4
0
3
2
0
2

Пояснення

Для першого запиту першого набору даних:

  • За $l=1$ маємо $s[i:i+l-1]=a$, $R(s[i+l:i+l+l-1])=b$.
  • За $l=2$ маємо $s[i:i+l-1]=ab$, $R(s[i+l:i+l+l-1])=ca$.
  • За $l=3$ маємо $s[i:i+l-1]=aba$, $R(s[i+l:i+l+l-1])=bac$.
  • За $l=4$ маємо $s[i:i+l-1]=abac$, $R(s[i+l:i+l+l-1])=baba$.

У всіх чотирьох випадках $s[i:i+l-1]$ лексикографічно менший за $R(s[i+l:i+2l-1])$, тому відповідь дорівнює $4$.

Приклад 2

Дивіться файли string/string2.in та string/string2.ans у каталозі учасника.

Обмеження цього прикладу відповідають тесту 5.

Приклад 3

Дивіться файли string/string3.in та string/string3.ans у каталозі учасника.

Приклад 4

Дивіться файли string/string4.in та string/string4.ans у каталозі учасника.

Обмеження цього прикладу відповідають тестам $24\sim25$.

Обмеження

Для всіх тестових даних гарантується $1\le t\le5$, $1\le n\le10^5$, $1\le q\le10^5$, $1\le i+2r-1\le n$; рядок $s$ містить лише малі літери.

Номер тесту $n$ $q$ Особлива властивість
1 $\le5$ $\le5$ A
2 $\le10$ $\le10$ A
3 $\le20$ $\le20$ A
4 $\le50$ $\le50$ A
5 $\le10^2$ $\le10^2$ A
6 $\le10^3$ $\le10^3$ Немає
7 $\le2000$ $\le2000$ Немає
8 $\le3000$ $\le3000$ Немає
9 $\le4000$ $\le4000$ Немає
10 $\le23333$ $\le23333$ A
11 $\le5\times10^4$ $\le5\times10^4$ A
12 $\le75000$ $\le75000$ A
13 $\le9\times10^4$ $\le9\times10^4$ A
14 $\le10^5$ $\le10^5$ A
15 $\le23333$ $\le23333$ B
16 $\le75000$ $\le75000$ B
17 $\le9\times10^4$ $\le9\times10^4$ B
18 $\le10^5$ $\le10^5$ B
19 $\le23333$ $\le23333$ Немає
20 $\le5\times10^4$ $\le5\times10^4$ Немає
21 $\le75000$ $\le75000$ Немає
22 $\le9\times10^4$ $\le9\times10^4$ Немає
23 $\le95000$ $\le95000$ Немає
24 $\le10^5$ $\le10^5$ Немає
25 $\le10^5$ $\le10^5$ Немає
  • Особлива властивість A: рядок містить лише символи a та b, причому кожен символ вибирається незалежно й рівноймовірно між a та b.
  • Особлива властивість B: будь-які сусідні символи рядка різні.

Discussions

About Discussions

The discussion section is only for posting: General Discussions (problem-solving strategies, alternative approaches), and Off-topic conversations.

This is NOT for reporting issues! If you want to report bugs or errors, please use the Issues section below.

Open Discussions 0
No discussions in this category.

Issues

About Issues

If you find any issues with the problem (statement, scoring, time/memory limits, test cases, etc.), you may submit an issue here. A problem moderator will review your issue.

Guidelines:

  1. This is not a place to publish discussions, editorials, or requests to debug your code. Issues are only visible to you and problem moderators.
  2. Do not submit duplicated issues.
  3. Issues must be filed in English or Chinese only.
Active Issues 0
No issues in this category.
Closed/Resolved Issues 0
No issues in this category.