Добрый день, сообщество кф! Помогите пожалуйста разобраться с задачей http://acm.timus.ru/problem.aspx?space=1&num=1900.
| № | Пользователь | Рейтинг |
|---|---|---|
| 1 | jiangly | 3810 |
| 2 | Benq | 3676 |
| 3 | Kevin114514 | 3655 |
| 4 | maroonrk | 3463 |
| 5 | strapple | 3447 |
| 6 | Um_nik | 3387 |
| 7 | heuristica | 3322 |
| 8 | turmax | 3317 |
| 9 | tourist | 3307 |
| 10 | jiangbowen | 3291 |
| Страны | Города | Организации | Всё → |
| № | Пользователь | Вклад |
|---|---|---|
| 1 | Qingyu | 156 |
| 2 | nik_exists | 150 |
| 2 | maspy | 150 |
| 4 | Um_nik | 141 |
| 5 | Errichto | 139 |
| 6 | adamant | 137 |
| 7 | AmShZ | 136 |
| 8 | BledDest | 132 |
| 9 | maroonrk | 131 |
| 10 | qwexd | 129 |
Добрый день, сообщество кф! Помогите пожалуйста разобраться с задачей http://acm.timus.ru/problem.aspx?space=1&num=1900.
| Название |
|---|



Dp[i][j] — мы стоим на перегоне i, j раз включали машину, последний разна этом перегоне. Скольким людям мы можем промыть мозги? Переход — перебираем, где включали в прошлый раз. Тогда мозги промыли всем, кто сел после k и выйдет после i.Это за O(n^5).
Теперь две оптимизации:
1) Когда перебираем k идём от i по убыванию и по ходу прибавляем тех, кто сел на последней станции
2) Для каждой станции прибавляемая величина — это сумма на некотором суффиксе, а эти суммы можно пред подсчитать
Каждая оптимизация съедает одну линию и мы получили решение за O(n^3)
мыслил примерно также, асимптотика O(n^3) получила TL. Есть ли какие-то ещё оптимизации, позволяющие уменьшить сложность, либо нужно просто допиливать код?
По логике 500^3 должно работать. Надо код смотреть...
по моему 500^3 никак не уложится в 1 секунду
У меня сейчас ровно то решение, которое я сказал выше, прошло за 0,3 секунды без каких-либо упихиваний.
5003 = 125000000 операций, или же примерно 108. Современные компьютеры переваривают до 109 достаточно спокойно, если нет медленных операций(деление, взятие по модулю, тригонометрические операции, возведение в степень и т.д.).
Кстати, видимо, можно использовать divide-and-conquare optimization и получить O(n2 * logn)
link
переписал код, теперь он работает 0,3 секунды, но получает wa 8
Попробуйте тест типа
была проблема с восстановлением ответа в таких случаях, теперь АС. помог тест