Добрый день, сообщество кф! Помогите пожалуйста разобраться с задачей http://acm.timus.ru/problem.aspx?space=1&num=1900.
№ | Пользователь | Рейтинг |
---|---|---|
1 | tourist | 4009 |
2 | jiangly | 3823 |
3 | Benq | 3738 |
4 | Radewoosh | 3633 |
5 | jqdai0815 | 3620 |
6 | orzdevinwang | 3529 |
7 | ecnerwala | 3446 |
8 | Um_nik | 3396 |
9 | ksun48 | 3390 |
10 | gamegame | 3386 |
Страны | Города | Организации | Всё → |
№ | Пользователь | Вклад |
---|---|---|
1 | cry | 167 |
2 | Um_nik | 163 |
3 | maomao90 | 162 |
3 | atcoder_official | 162 |
5 | adamant | 159 |
6 | -is-this-fft- | 158 |
7 | awoo | 157 |
8 | TheScrasse | 154 |
9 | Dominater069 | 153 |
9 | nor | 153 |
Добрый день, сообщество кф! Помогите пожалуйста разобраться с задачей 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
Попробуйте тест типа
была проблема с восстановлением ответа в таких случаях, теперь АС. помог тест