1 Тимофеев Кирилл Игоревич, 23 декабря 2020 г. 21:33:31 |
Если у вас решение за O(n * k * log(n)), попробуйте ios_base::sync_with_stdio(0); cin.tie(0); cout.tie(0); И другие оптимизации. У меня после того как поставил вышенаписанное, и поменял long long на int, зашло за 0.468)
|
|
|
|
2 Матус Даниил Дмитриевич, 06 августа 2020 г. 1:00:42 |
что за херня на обычном cin cout тл на 10 на freopenиз файла тоже но нет на сканэфе все прошло а так да корневая декомпозиция- разбиение большого массива на много маленьких размером с корень
|
|
|
3 Кузнецов Степан Андреевич, 20 мая 2020 г. 19:23:43 |
Изи Фенвик 0,124
|
|
|
4 Ринчинов Солбон Геннадьевич, 08 мая 2020 г. 22:24:01 |
У питона input().split() довольно медленный
|
|
|
5 Кутузов Николай Владимирович, 01 мая 2020 г. 10:43:36 |
Товарищи, я не могу понять: это проблема питона и его медленности, либо с алгоритмом что-то не так? Он вроде как имеет асимптотику O(k * n * log(n)), но на 10-ом тесте даёт TLE
|
|
|
6 АЩщщ, 08 ноября 2019 г. 19:25:50 |
Просто обычный Фенвик ,тут даже думать над алго не надо.
|
|
|
7 Аркадий Сиплюсович, 20 октября 2019 г. 17:09:04 |
легкая sqrt декомпозиция
|
|
|
8 Винк В В, 17 марта 2018 г. 20:58:18 |
В условии написано:"В каждом ряде". Так недалеко и до "ихнего" или "евошнего" )
|
|
|
9 Иванов Иван, 20 сентября 2017 г. 0:41:17 |
Одномерный фенвик -- TLE 10. Поставил scanf() -- зашла 0.186
|
|
|
10 Монтеверде Авраам Соломонович, 22 июля 2017 г. 22:41:29 |
В задаче не нужны никакие специфические структуры данных, кроме обычного массивчика, который можно сортировать (вектор). Заметим, что если справа от солдата A находится M солдат, меньших А ростом, то при сортировке (так как все числа различны) ему так или иначе придётся пропустить этих М солдат слева от себя. На что это похоже? Правильно -- число инверсий для роста А в перестановке чисел от 1 до N. Ну а для подсчёта числа инверсий в последовательности чисел давно используется merge_sort (сортировка слиянием) с небольшой модификацией. Итоговая ассимптотика решения -- k * n * log n, что по времени укладывается в 1 секунду. Моё решение работает 0.25 секунд максимум. И не нужно тут никаких деревьев.
|
|
|
11 Зубашев Степан, 07 августа 2016 г. 15:28:39 |
Нашёл разбор. Понял главную свою ошибку. Можно решить гораздо компактнее и проще, если по-другому подходить к подсчёту кол-ва солдат выше ростом. Не важно что вы используете (скажем дерево отрезков, дерево Фенвика или же sqrt-декомпозицию). Ключ к простому решению: возможность обновления древа при просчёте результата слева направо. Подсчитали для I-го солдата, поправили древо, посчитали для I+1-го. И тогда не нужны сортировки и бинарный поиск по сортированному массиву. Правда получилось всего в 1.5 раза быстрее :)
|
|
|
12 Зубашев Степан, 04 августа 2016 г. 21:03:37 |
Решил, используя: 1. дерево отрезков с подмассивами 2. сортировку слиянием (ввиду п.1) 3. бинарный поиск Как-то уж больно лихо для 58%, не находите? Полагаю, что я сильно перемудрил. Можно было обойтись древом отрезков и без подмассивов? Судя по лучшим результатам ребята в 200 мс укладываются.
|
|
|
13 Зубашев Степан, 04 августа 2016 г. 20:49:12 |
Неожиданно для себя обнаружил, что моё решение не проходило из-за throw, который я использовал пока отлаживал своё решение. throw в коде остался, хотя и не использовался. Алгоритм работал. Но я уверенно получал TLE 1.3sec. Убрав неиспользуемый throw получил 0.5 sec. Нет я знал, что исключения это медленно, но я наивно полагал, что медленно отлавливать ошибки. Оказывается медленно всё. Для олимпиадных задач, похоже, совершенно не годится.
|
|
|
14 Ислом Искандаров, 01 сентября 2015 г. 21:34:18 |
Дерево отрезков !!! :)
|
|
|
15 Керножицкий Александр Сергеевич, 19 мая 2015 г. 13:29:22 |
Дерево Фенвика!!!
|
|
|
16 Денис Розимовский, 16 мая 2015 г. 17:33:24 |
Так же можно решить через более элегантное BST (бинарное древо поиска).
|
|
|
17 Денис Розимовский, 16 мая 2015 г. 11:58:47 |
Использовал структуру данных vector. При каждом новом солдате искал неким подобием бинарного поиска его место в этом векторе. Потом добавлял к финальном результату число равное количеству чисел, которые идут после j-того солдата.
|
|
|
18 Егоров Владимир Тимофеевич, 24 августа 2014 г. 8:35:51 |
Гы, моё решение за 0,047 прошло.
|
|
|
19 Аман Жарасхан Алматович, 07 декабря 2012 г. 16:49:35 |
5 2 1 5 2 4 3 => (5 - 2) + (5 - 4) + (5 - 3) = 3 + 1 + 2 = 6 2 3 1 5 4 => (3 - 1) + (5 - 4) = 2 + 1 = 3 6 + 3 = 9 Почему ответ 7 Мне вообще не понятны ваши записи. На самом деле дело обстоит так: в первом ряду отжимаются 3 солдата: 2 солдата с ростом 2 и 4 отжимаются по 1 разу (т.к. всего один солдат слева от них выше их самих, это солдат с ростом 5), солдат с ростом 3 отжимается 2 раза, т.к. солдаты с ростом 4 и 5 выше его и находятся левее. Итого в первом ряду мы имеем 1+1+2=4 отжимания. Со вторым рядом еще проще, там отжимаются всего 2 солдата - это солдаты с ростом 1 (2 раза отжимается, т.к. слева солдаты с ростом 2 и 3) и ростом 4 (1 раз отжимается, т.к. только один солдат с ростом 5 левее). Итого во втором ряду мы имеем 1+2=3 отжиманий. В результате получаем, что сумма отжиманий по всем рядам равна 4+3=7. Что и требовалось объяснить :)
|
|
|
20 Глембоцкий Владислав Олегович, 22 апреля 2012 г. 1:56:34 |
Шефтелевич Павел Аркадьевич У меня слияние прошло на 0,14 (все зависит от сервера)
|
|
|