Двач.hk не отвечает.
Вы видите копию треда, сохраненную 2 января 2016 года.

Скачать тред: только с превью, с превью и прикрепленными файлами.
Второй вариант может долго скачиваться. Файлы будут только в живых или недавно утонувших тредах. Подробнее

Если вам полезен архив М.Двача, пожертвуйте на оплату сервера.
65 Кб, 547x493
Олимпиадных задач тред #582230 В конец треда | Веб
Начну с себя,

Билли Бонс положил в сундук некоторое количество золотых монет. На второй год он вынул из сундука сколько-то монет. Начиная с третьего года, он добавлял столько монет, сколько было в сундуке два года назад.

Требуется написать программу, которая определит, сколько монет было в сундуке в первый и во второй года, если в X-м году там оказалось ровно Y монет.

Входные данные

Входной файл содержит натуральные числа X и Y (3 ≤ X≤20, 1≤Y≤32767).

Выходные данные

В выходной файл выведите через пробел количество монет в первый и второй года. Гарантируется, что решение задачи всегда существует.
Как ее решить?В душе не чаю.
#2 #582242
1. Положил: С монет (1C-0x)
2. Вытащил - Х монет. (стало 1С-1X)
3. Положил C монет. (стало 2С-1X)
4. Положил С-X монет. (стало 3C-2х)
5. Положил 2С-Х монет (стало 5С-3х)
6. Положил 3с-2х монет. ( стало 8С - 5Х монет)
7. Положил 5С-3х монет. ( стало 13С - 8Х монет)
Очевидно что коэффициенты у чисел равны числам фибоначчи:

Число монет в год N равно F(x) Положил - F(x-1) Взял.

Таким образом, тебе надо решить уравнение AX - BY = Z, в котором A и B известны, и при этом Y < X, а также известно что значения - целочисленные.

Дальше, я думаю, сможешь посчитать сам.
#3 #582243
>>582242
Спасибо
#4 #582262
Если решений несколько, нужны все или любое? А так-то легко.
Пусть в первый год положили N монет, а во второй год вытащили m монет.
В год X в сундуке Y=(N-m + (X-2)N) монет.
m = N(X-1) - Y ≤ N
Пусть m≥1. Тогда берёшь любое натуральное N из промежутка от (Y+1)/(X-1) до Y/(X-2) и по нему считаешь m. Если m может быть равно нулю, то промежуток надо брать от Y/(X-1) до Y/(X-2)
#5 #582265
>>582262
Гарантируют что решение одно
#6 #582266
>>582262
Хотя я неправильно условие понял, забудь.
#7 #582288

>Начиная с третьего года, он добавлял столько монет, сколько было в сундуке два года назад.


Сколько было после того как он забрал монеты, или столько, сколько он положил в первый год?
#8 #587423
>>582242
это считается элементарным; вся суть задачи в поиске этих самых коэффициентов. циклом по времени не проходит. возможно бинарный поиск
#10 #587586
Дан массив n целых положительных (>0) чисел и число k <= n. Нужно разбить массив на k (возможно пустых) частей так, чтобы минимизировать максимальную сумму внутри частей.
Например:
4 2 -1 5, k = 2
Видим, что оптимальное разбиение это 4 + 2 - 1 и 5, т.е. max(5, 5) = 5, в остальных случаях максимум больше.
Найти минимальную максимальную сумму, само разбиение находить не надо.
Время: O(kn)
Память: O(k + n)
задачка с собеседования в американский яндекс
#11 #587591
>>587586

> Дан массив n целых положительных (>0) чисел


> 4 2 -1 5

#12 #587617
>>587591
Вот обосрался с примером. Если числа отрицательные, то только O(k * n^2)

Вот правильный пример:
4 2 1 5, k = 2
4 + 2 и 1 + 5, ответ 6.
#13 #588027
Это оффициальный тред? Тут теперь спрашивать помощь по решению олимпиадных задач?
#14 #588072
>>587586
Бин поиск по ответу + жадность. Ответ надо искать в промежутке от 1 до суммы всех чисел. Выбрав какую-то сумму s идем по последовательности и в текущую подпоследовательность пихаем столько элементов, сколько можем.
#15 #588075
>>588072
Только тут время n log(sum a_i), что меньше o(nk) для маленьких k. Ща еще подумаю.
#16 #588085
Кстати в наукаче есть тред про Computer Science. Говорят и с олимпиадными задачами к ним можно. Поэтому если в этот тред будут заходить только полтора умеющих решать задачки анона, то можно к ним перекатиться.
#17 #588333
>>588072

>для больших k


вот это ты хотел сказать.
Оригинально. Я просто через SMAWK решил т.к. матрица получается строго монотонная.
#18 #588384
Дан массив uint64_t, найти непрерывный подмассив с максимальным xor-ом. Т.е. подмассив l1, l2, ... lk такой, что l1 ^ l2 ^ ... lk максимально.
#19 #588823
>>588333

> Оригинально


На самом деле бин поиск по ответу - это стандартный асмовский прием, я его десятки раз писал. А про SWAMK первый раз слышу.
#20 #588863
>>588823

> SMAWK


фикс
#21 #588895
Лол, оп, задача в твоём посте очень простая, решил буквально за 3 минуты полным перебором, думал словлю таймлимит, но нихуя. Вот как я рассуждал. Во первых, сразу бери листочек и ручку и начинай придумывать примеры, я вот взял числа 6 и 30 и сразу увидел, что снизу вверх можно собрать уравнение, а потом перебором найти коэффициенты. Вот код, если интересно. http://pastebin.com/sRYe7kUz
#22 #588896
>>582265
Гарантируют, что оно ЕСТЬ. Учись читать условия.
#23 #588948
>>587586
>>587586
На checkio похожая задача есть, только там количество групп ограничено 2мя. И минимальной должна быть разница между суммами в них.
#24 #589196
>>588823
Ну SMAWK это тоже в некотором смысле "олимпиадный приём".
Есть матрица nxn с таким свойством. Если a[r1][c1] >= a[r1][c2], то для всех r > r1 a[r][c1] >= a[r][c2]
Найти в данной матрице минимальный элемент в каждой строчке за O(n)
Это и есть SMAWK
#25 #589366
>>588384
Дерево отрезков?
#26 #589368
>>588384
>>589366
То есть нужно модифицировать "Поиск подотрезка с максимальной суммой" вот в этой статье
http://e-maxx.ru/algo/segment_tree
#27 #589376
>>589368
Ну а для тупых есть вариант с trie. Запихиваем все частичные xor-ы в trie, а после этого нам нужно для каждого частичного xor-а найти такой частичный xor, который бы при xor-е дал максимальный результат, т.е. в trie стараемся идти в 0 когда в исходном числе 1 и в 1, когда в исходном числе 0.
sage #28 #589464
Блядь, какое-то торжество олимпидодаунов, и их ещё не обоссали? Что ж! Я буду первым! Открывайте рот пошире, чтобы не пропустить ни капли!
73 Кб, 704x864
#29 #590623
Чет никто не вбрасывает. Тогда я вброшу такую задачу с опенкапа недавнего. Это обобщение загадки о волке, козе и капусте на случай, когда животных много.
145 Кб, 706x897
39 Кб, 713x555
#30 #590624
>>590623
Ой, картинки не те.
#31 #590663
Кстати можно где-нибудь получить сертификат что я мастер алгоритмов? Как к нему готовиться?
только начал
#32 #590685
>>590624
И нахуя это нужно?
#33 #590748
>>590685
Что значит нужно?
#34 #590762
>>590748
Для чего вы это решаете? В каких проектах будете применять?
28 Кб, 430x520
#35 #590764
>>590762
Для развлечения, очевидно.
#36 #590775
>>590762
>>590764
По крайней мере, я этим занимаюсь для развлечения. Возможно кто-то решает олимпиады, потому что хочет профессионально заниматься алгоритмами или чем-то подобным.
181 Кб, 600x600
#37 #590779
>>590762
ЧО ЗА ГРАФЫ ТАКИЕ?
@
КРУЖКИ РИСУЕШЬ ЧТО ЛИ?
@
РАСКРАСКИ? КАКИЕ РАСКРАСКИ?
@
БЛЯ У МЕНЯ У ПЛЕМЯННИКА ТОЖИ РАСКРАСКИ ЕСТЬ))0
@
А ТЕБЕ-ТО 20 ЛЕТ, КАКИЕ РАСКРАСКИ, ТЫ ЧО ЕПТ))0
@
А ДЕВУШКУ СВОЮ ТЫ ГРАФАМИ БУДЕШЬ ЗАЩИЩАТЬ?)))0
#38 #590787
>>590779
>>590775
>>590764
Но ведь всё это - говно без задач. Учили бы лучше принципы построения грамотной архитектуры и всё такое.
#39 #590790
>>590787
Это учит мыслить out of the box. Современная архитектура, кстати, уже подгнивает. Индустрии требуется языки шестого поколения, потому что предыдущие уже не справляются с нагрузкой комплексностью.
Изобретать же новые инструменты будут не дрочители паттернов, а те кто смогут выйти за пределы текущей парадигмы.
#40 #590803
>>590787
Ты просто быдло. Я не знаю как объяснить. Ты музыку слушаешь? Тебе музыка как-то поможет деньги заработать, если ты не профессиональный музыкант?
#41 #590828
>>590803
Но я - профессиональный музыкант.
#42 #590848
>>590828
Ну ладно. Тогда я профессиональный математик, занимаюсь теорией графов, в своей команде по acm отвечаю за всякие графы и деревья.
Аноним #43 #590852
>>590848
А я Иван, сосу кукан))
#44 #590855
>>590848
Тогда тебе можно решать задачи про волка, козу и капусту.
#45 #590858
>>590855
Спасибо.
#46 #590935
Даунята не в курсе, что на собеседовании в любую нормальную компанию сейчас дают решать олимпиадные задачи, и спрашивают про математику и алгоритмы.
Теперь это подготовки к собеседованию в гугл тренд #47 #591181
Энтри левел. Дано n (очень большое) и m, найдите n-е число Фибоначчи по модулю m.
#48 #591384
>>591181
А m какое? За какое время надо решить?
#49 #591390
>>591181
Можно использовать формулу Бине (с корнями из 5) и быстрое возведение в степень. Если m и n взаимно простые, то по теореме Эклера можно найти обратный элемент. Время работы O(log n + log m).
#50 #591414
>>591384
m влазит в инт, ну как минимум линейное от номера числа.
54 Кб, 1194x660
#51 #591420
>>591390

>теореме Эклера


Какой обратный элемент, что ты несёшь? Быстрое возведение в степень по модулю, ты хотел сказать?
#52 #591430
>>591420
Ну в формуле Бине надо в конце делить на 2^n. А чтобы поделить на 2^n в кольце вычетов по модулю m, нужно найти обратный элемент, нельзя просто делить. А его проще всего найти по теореме Эклера (но если n и m не взаимно простые, то не получится).

Наверное, более простой вариант, последовательно вычислять числа по модулю m, пока пары чисел не начнут повторяться. Дальше просто находим период. Назовем его T. Ответ - это число с номером n mod T. Пары чисел начнут повторяться через O(m^2) вычисленных чисел, потому что есть m^2 / 2 различных пар элементов в Z_m. У меня есть подозрение, что они раньше начнут повторяться, но я хз как доказать.
#53 #591431
>>591430

> но если n и m не взаимно простые, то не получится


Фикс: 2^n и m не взаимно простые естественно. То есть m должно быть хотя бы нечетным.
#54 #591439
>>591430
Ок, с периодом Пизано закатит.
#55 #591458
http://ideone.com/0TGSWI а как же вариант через матрицы, который за O(log(n)) работает через школьную арифметику..
#56 #591459
>>591439
Ебать, оказывается это еще и назвали в честь кого-то, хотя этот результат придумывается за 5 минут любым асмщиком.
#57 #591460
>>591458
Бляяя, точно, чет не подумал.
#58 #591464
Пожалуй, продолжу. Задачка из facebook задавал индус
Кузнечик находится в (0, 0). После этого он делает n шагов. Шаг это - (+1, 0), (-1, 0), (0, +1) или (0, -1).
Рассмотрим множество всех его возможных путей. Их 4^n. Будем считать два пути различными, если множество посещённых координат различается.
Сколько всего уникальных путей у кузнечика, если он делает n шагов?
Нужно быстрее чем за O(n) и без преподсчёта.
20 Кб, 703x313
#59 #591477
>>591464
Чет хуй знает пока что. Я спать пойду.
#60 #591512
>>591464
4 * 3 ^ (n - 1)
#61 #591514
>>591512
Или не. Наверное сумма этой хуйни от 1 до n, считать что n ^ 0 = 1.
#62 #591516
>>591512
За каждый шаг вариативность пути возрастает на 4 клетки.
Значит: n^4
#63 #591518
>>591516
Некоторые пути одинаковые по определению "различных путей". Например влево - влево - враво - влево и влево - вправо - влево - влево.
#64 #591520
>>591464
>>591464
Какая-нибудь формула из комбинаторики не подходит?
#65 #591521
>>591514
Я так подумал, это тоже не правильно. Нужно на каждом шаге (от 1 до n) высчитать количество путей которые не пересекаются сами с собой, и проссумировать.
#66 #591523
>>591521
Ох блядь, там еще нужно учесть пути соприкасающиеся с началом. Вот же индус.
#67 #591529
>>591464

>Будем считать два пути различными, если множество посещённых координат различается.


Хуйня кокая-то.
для n=2 путей 16 но уникальных только 12, ибо путь (1 -1 1) образует подмножество пути (1 1 1). И так 4 раза.
Т.е наверно нужно учитывать только самы длинные пути, ибо у них самы сильные множества.
#68 #591530
>>591518
Я уже понел, но чет никак не соображу формулу.
для n=3 у меня получилось 9*4 разных путей.
#69 #591532
Лол, походу задача сводится к поику площади прямоугольника с вершинами {n,n}{n,-n}{-n,n}{-n,-n}.
Ну сами посудите: любая крайняя клетка(принадлежит периметру) может быть достигнута за n шагов, любая внутреняя клетка не является уникальным путем, ибо ее координаты точно войдут в путь до края или станут конечными в путе-цикле(путь с повторами шаг - вперед шаг назад).

цыфры вроде сходятся.
Кароч формула: (4n) + 4 sum(1, n - 1)
3 Кб, 283x249
#70 #591553
Вершины же по нулевой оси?
#71 #591555
>>591553 -> >>591532
И, кстати, в одну точку можно добраться разными путями без циклов. Например, вверх-вправо и вправо-вверх — точка одна, а путей уже 2.
92 Кб, 1323x320
#72 #591603
>>591512
>>591530
>>591532
по фразе "Нужно быстрее чем за O(n) и без преподсчёта." наверное можно понять что формулы там нихуя нет и надо писать алгоритм.
>>591529

>для n=2 путей 16 но уникальных только 12, ибо путь (1 -1 1) образует подмножество пути (1 1 1).


какие из слов "множества посещенных координат" тебе непонятны?
#73 #591659
>>591603
Че может подскажешь? Как-то вообще идей нет
#74 #591675
>>591659
Нужно думать out of the box.
#75 #591711
Нужен учебник олимпиадным задачам. Не алгоритмам, а именно задачам.
#76 #591820
>>591675
Я сегодня уже думал out of the box, когда твою мамку на секс разводил. Уже лимит думанья out of the box превышен.
33 Кб, 557x350
#77 #591844
Поясните за функцию эйлера. Как этот код и формула связаны? В формуле от 1 отнимают единицу деленную на простое число что меньше единицы и это перемножают с другими результатами которые меньше единицы. Получается какое-то маленькое число которое умножают на n. И при чём тут этот код?
#78 #591959
>>591844
Скобочки начни раскрывать слева.
#79 #592906
>>591844
Функция эйлера - это количество чисел меньше n, взаимно простых с n. Несложно доказать, что она мультиплакитивна. А какой-то арифметической формулы для нее нет. Код который ты привел вычисляет функцию Эйлера перебором. А что это за формулы - хуй знает.
#80 #592907
>>591844
А нет, падажжи, я понял. В той формуле сверху пэ это простые делители, а альфа - их кратность. Но один хуй в коде вычисляется не по этой формуле.
‮минонА #81 #592958
>>592906
Во первых, там нихуя не полный перебор, а перебор с учётом формулы. Во вторых, того что она мультипликативна достаточно для вывода формул выше.
>>591844
Следи за рукой:
n(1-1/p1)...(1-1/pk) = (n - n/p1)(1-1/p2)...(1 - 1/pk) и так далее последовательным раскрытие скобок. Код делает то же самое - находит простой делитель n и раскрывает для этого делителя его скобку, а само n делит пока оно не станет взаимно просто с этим делителем.
#82 #594809
>>591464
Ну дак че, как решать?
171 Кб, 1347x493
#83 #594832
Как без массива решать? С решение в лоб меньше половины тестов проходит.
#84 #594919
>>594832
это скрин с какого сайта?
#85 #594922
>>594919
dl.gsu.by Ссылка не дам т.к. нужна регистрация она без инвайтов, но всё равно всем лень и так проще.
#86 #595138
>>594832
Помогите.
#87 #595341
>>595138
Пожалуйста.
#88 #595466
>>594832
Где же все знатоки? Может там какой-то известный алгоритм из ДП, а я его не знаю?
#89 #596141
>>595466
Ну хуй знает. Можно такой тупой алгоритм: рассмотрим каждую строчку. Возьмём наш прямоугольник RxC и будем двигать его слева направо и считать количество деревьев в нём. Для каждого отдельно взятого прямоугольника линия будет иметь вид / --- \ (то есть, три фазы- рост, константность, падение). Заметим, что скорость роста - константна, падения - тоже. Теперь у нас задача - есть 100 таких линий, нужно их сложить, а потом найти точку минимума.

Вот так примерно выглядит линия для одного прямоугольника:
0 0 0 10 20 30 30 30 30 30 30 30 20 10 0 0 0
Представим, что это - линия, имеющая в x=0 значение 0, в x =1 значение 0, в x=2 значение 0, потом между x=2 и x=3 она идёт вверх с производной 10, в x=3 достигает значения 10, в x=4 - значения 20, итд. Теперь возьмём производную от этой линии. она будет представлять из себя 3 отрезка - со значением 10 на отрезке [2, 5], со значением 0 на отрезке [5, 11] и со значением -10 на [11, 14]
Нас интересуют точки, где производная либо меняет знак с - на +, либо равна 0 (ну, будем считать, что меняет знак с - на + включает переход из 0 в положительное значение). То есть изначально интересные точки - [2, 5, 11, 14]. В точке 2 производная набирает 10 очков, в точке 5 их теряет, в точке 11 теряет ещё 10 очков, а в точке 14 набирает 10 очков. (очки - скорость роста).
Значит, таких линий всего может быть 100. Пройдёмся сканлайном по их интересным точкам,и найдём минимальное значение количества деревьев. Проглядеть минимум мы не могли так как он находится только в интересных точках. Сканлайн нужен, чтобы мы могли, зная значение производной, предсказать сколько же будет деревьев в следующей интересной точке.

Итого на строчку уходит 400 log(400) на сортировку интересных точек + 400 на проход по ним + 400 на заполнение массива перед сортировкой.
Получаем 400
(log(400) + 2) 10^5 = 4000 10^5 = 4 10^8.
Ну хуй знает.

И тут возникает идея - нам по сути можно перенести идею с производными на двумерное пространство.
Тогда нужно всего-лишь понять, какое множество точек для парка является интересным. Нарисуй в 3D как оно будет выглядеть - я вижу, что сверху, слева, внизу, справа это будут тупо плоскости наклонные, (как раскрытая коробка), а вот по углам контур интересных точек я не могу представить. нужна бумага уже.
Тогда идея такая - у каждого парка будет 10^5
20 интересных точек. Каждую из них можно проверить за 100 (тупо пересекаем со всеми парками и смотрим сколько деревьев), получается 10^5 20 100 = 2 * 10^8.
Мб как-то можно сократить множество проверяемых парков какими-нибудь тупыми корзинками по координатам.
#89 #596141
>>595466
Ну хуй знает. Можно такой тупой алгоритм: рассмотрим каждую строчку. Возьмём наш прямоугольник RxC и будем двигать его слева направо и считать количество деревьев в нём. Для каждого отдельно взятого прямоугольника линия будет иметь вид / --- \ (то есть, три фазы- рост, константность, падение). Заметим, что скорость роста - константна, падения - тоже. Теперь у нас задача - есть 100 таких линий, нужно их сложить, а потом найти точку минимума.

Вот так примерно выглядит линия для одного прямоугольника:
0 0 0 10 20 30 30 30 30 30 30 30 20 10 0 0 0
Представим, что это - линия, имеющая в x=0 значение 0, в x =1 значение 0, в x=2 значение 0, потом между x=2 и x=3 она идёт вверх с производной 10, в x=3 достигает значения 10, в x=4 - значения 20, итд. Теперь возьмём производную от этой линии. она будет представлять из себя 3 отрезка - со значением 10 на отрезке [2, 5], со значением 0 на отрезке [5, 11] и со значением -10 на [11, 14]
Нас интересуют точки, где производная либо меняет знак с - на +, либо равна 0 (ну, будем считать, что меняет знак с - на + включает переход из 0 в положительное значение). То есть изначально интересные точки - [2, 5, 11, 14]. В точке 2 производная набирает 10 очков, в точке 5 их теряет, в точке 11 теряет ещё 10 очков, а в точке 14 набирает 10 очков. (очки - скорость роста).
Значит, таких линий всего может быть 100. Пройдёмся сканлайном по их интересным точкам,и найдём минимальное значение количества деревьев. Проглядеть минимум мы не могли так как он находится только в интересных точках. Сканлайн нужен, чтобы мы могли, зная значение производной, предсказать сколько же будет деревьев в следующей интересной точке.

Итого на строчку уходит 400 log(400) на сортировку интересных точек + 400 на проход по ним + 400 на заполнение массива перед сортировкой.
Получаем 400
(log(400) + 2) 10^5 = 4000 10^5 = 4 10^8.
Ну хуй знает.

И тут возникает идея - нам по сути можно перенести идею с производными на двумерное пространство.
Тогда нужно всего-лишь понять, какое множество точек для парка является интересным. Нарисуй в 3D как оно будет выглядеть - я вижу, что сверху, слева, внизу, справа это будут тупо плоскости наклонные, (как раскрытая коробка), а вот по углам контур интересных точек я не могу представить. нужна бумага уже.
Тогда идея такая - у каждого парка будет 10^5
20 интересных точек. Каждую из них можно проверить за 100 (тупо пересекаем со всеми парками и смотрим сколько деревьев), получается 10^5 20 100 = 2 * 10^8.
Мб как-то можно сократить множество проверяемых парков какими-нибудь тупыми корзинками по координатам.
#90 #596143
>>596141
Хотя, 100 миллионов это слишком дохуя для OJ, есть подозрение, что тут нужно что-то более хитровыебанное, либо тебе повезёт и на их тестах оно пройдёт. Хотелось бы увидеть правильное решение, ну ты попробуй, вдруг прокатит.
#91 #596166
Кажись, придумал решение, которое влезает всегда в TL.
Забудь про вторую идею с коробкой. Итак, для каждой строчки у нас есть набор интересных точек, их не более 400. Объединим интересные точки всех строчек. Их опять будет 400. Бинго! То есть мы можем из 10^5 столбцов оставить 400.
Теперь проведём такой же финт, но со строчками. Теперь у нас матрица 400 на 400.

После этого нам только нужно быстро уметь находить количество деревьев в данной точке. Просто для каждого прямоугольника проставляем правильное значение производной для каждой интересной точки - 400, а потом сканлайн за 400.
Получается, каждую строчку мы пробегаем за 800, строчек 400 - ответ за 320,000. Должно влезать в любой таймлимит теперь.
#92 #596323
>>596166
Не понял как это сделать. Что из верхнего описания ты выкинул, а что оставил?
#93 #596389
>>596323
Оставил подсчёт количества деревьев через производные. Выкинул перебор ненужных 10^5 строчек, оставив только 400.

Вот код на питоне
http://ideone.com/b17P6I
По крайней мере на вариантах до 100 ответ совпадает с тупым перебором.
#94 #596405
>>596389
Ого даже код написал. Спасибо. Щас сам попробую.
#95 #598514
Пацаны, кто-то следил за полуфиналом? Вот standings:
http://neerc.ifmo.ru/information/standings.html
А как понять, кто прошел в финал?
#96 #598530
Пусть A = {1, 2, ..., n}. Найти максимальное по мощности A' ⊂ A такое, что A' не содержит x и y таких, что x = 2y.
#97 #598533
>>598530
Забыл еще:

Если максимальных по мощности подмножеств несколько, вывести любое из них.

Время полиномиальное.
#98 #598557
>>598533
Ну давай подумаем в двоичной системе.
Если есть число XXXX, то нельзя чтобы было число XXXX0, при этом XXXX00 можно.
То есть для любого числа XXX мы выводим XXX XXX00 XXX0000, удваивая число нулей на конце. при этом начинать с XXX0 не имеет смысла так как, если начать с XXX, мы получим больше чисел - раньше вылезем за N.

Значит, алгоритм такой: для каждого нечётного числа выводим x, x 4, x 16, x * 64, ...
Так как каждое число мы просмотрим максимум один раз, сложность O(n)
http://ideone.com/BWwyTO
#99 #598573
>>598557
Да, я так же решил.
#100 #598618
Дано дерево, у каждого ребра некоторый вес. Поступают запросы
1) Изменить вес ребра между u и v
2) Найти максимальное ребро на кратчайшем пути между вершинами u и v.

Давайте представим, что про HLD мы не знаем.
#101 #601491
Есть какой-нибудь учебник по олимпиадным задачам?
#102 #606046
бамп
Обновить тред
Двач.hk не отвечает.
Вы видите копию треда, сохраненную 2 января 2016 года.

Скачать тред: только с превью, с превью и прикрепленными файлами.
Второй вариант может долго скачиваться. Файлы будут только в живых или недавно утонувших тредах. Подробнее

Если вам полезен архив М.Двача, пожертвуйте на оплату сервера.
« /pr/В начало тредаВеб-версияНастройки
/a//b//mu//s//vg/Все доски