Доброго времени суток. Помогите, пожалуйста, решить задачу из ИОИП 2014 года. Разбора не нашел. http://codeforces.me/gym/100397
| № | Пользователь | Рейтинг |
|---|---|---|
| 1 | Benq | 3676 |
| 2 | Kevin114514 | 3657 |
| 3 | jiangly | 3638 |
| 4 | turmax | 3442 |
| 5 | tourist | 3380 |
| 6 | Um_nik | 3353 |
| 7 | strapple | 3350 |
| 8 | squareOf105 | 3346 |
| 9 | heuristica | 3322 |
| 10 | maroonrk | 3310 |
| Страны | Города | Организации | Всё → |
| № | Пользователь | Вклад |
|---|---|---|
| 1 | Qingyu | 158 |
| 2 | nik_exists | 150 |
| 2 | maspy | 150 |
| 4 | AmShZ | 144 |
| 5 | Um_nik | 143 |
| 6 | Errichto | 139 |
| 7 | adamant | 137 |
| 8 | BledDest | 135 |
| 9 | maroonrk | 133 |
| 10 | qwexd | 130 |
Доброго времени суток. Помогите, пожалуйста, решить задачу из ИОИП 2014 года. Разбора не нашел. http://codeforces.me/gym/100397
| Название |
|---|



Ну самое простое решение: посчитать хеши строк, чтобы быстро все сравнивать. Теперь проверим подойдет ли нам позиция p. Для этого бинарным поиском найдем максимальную длину префикса строки t, совпадающей с префиксом строки s[p..]. Пусть эта длина равна l. Нам осталось убедится, что символ s[p+l] != t[l] (индексация с нуля), s[p+l+k] != t[l+k], и с помощью хешей проверить совпадение 2 подстрок (суффикса строки t и серединки строки t). Получим решение за O(|s| * log(|s|) + |t|). С помощью Z-функции можно получить решение за время O(|s| + |t|).
Спасибо большое!