Сохранен 102
https://2ch.hk/pr/res/582230.html
Прошлые домены не функционирует! Используйте адрес ARHIVACH.VC.
24 декабря 2023 г. Архивач восстановлен после серьёзной аварии. К сожалению, значительная часть сохранённых изображений и видео была потеряна. Подробности случившегося. Мы призываем всех неравнодушных помочь нам с восстановлением утраченного контента!

Олимпиадных задач тред

 Аноним 17/11/15 Втр 20:36:13 #1 №582230 
14477817736860.jpg
Начну с себя,

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

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

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

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

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

В выходной файл выведите через пробел количество монет в первый и второй года. Гарантируется, что решение задачи всегда существует.
Как ее решить?В душе не чаю.
Аноним 17/11/15 Втр 20:50:13 #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, а также известно что значения - целочисленные.

Дальше, я думаю, сможешь посчитать сам.
Аноним 17/11/15 Втр 20:51:17 #3 №582243 
>>582242
Спасибо
Аноним 17/11/15 Втр 21:00:41 #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)
Аноним 17/11/15 Втр 21:03:10 #5 №582265 
>>582262
Гарантируют что решение одно
Аноним 17/11/15 Втр 21:03:21 #6 №582266 
>>582262
Хотя я неправильно условие понял, забудь.
Аноним 17/11/15 Втр 21:14:43 #7 №582288 
>Начиная с третьего года, он добавлял столько монет, сколько было в сундуке два года назад.
Сколько было после того как он забрал монеты, или столько, сколько он положил в первый год?
Аноним 23/11/15 Пнд 21:36:50 #8 №587423 
>>582242
это считается элементарным; вся суть задачи в поиске этих самых коэффициентов. циклом по времени не проходит. возможно бинарный поиск
Аноним 23/11/15 Пнд 22:44:30 #9 №587514 
https://ru.wikipedia.org/wiki/%D0%94%D0%B8%D0%BE%D1%84%D0%B0%D0%BD%D1%82%D0%BE%D0%B2%D0%BE_%D1%83%D1%80%D0%B0%D0%B2%D0%BD%D0%B5%D0%BD%D0%B8%D0%B5
Аноним 23/11/15 Пнд 23:45:32 #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)
задачка с собеседования в американский яндекс
Аноним 23/11/15 Пнд 23:50:29 #11 №587591 
>>587586
> Дан массив n целых положительных (>0) чисел
> 4 2 -1 5
Аноним 24/11/15 Втр 00:09:08 #12 №587617 
>>587591
Вот обосрался с примером. Если числа отрицательные, то только O(k * n^2)

Вот правильный пример:
4 2 1 5, k = 2
4 + 2 и 1 + 5, ответ 6.
Аноним 24/11/15 Втр 18:01:03 #13 №588027 
Это оффициальный тред? Тут теперь спрашивать помощь по решению олимпиадных задач?
Аноним 24/11/15 Втр 18:40:08 #14 №588072 
>>587586
Бин поиск по ответу + жадность. Ответ надо искать в промежутке от 1 до суммы всех чисел. Выбрав какую-то сумму s идем по последовательности и в текущую подпоследовательность пихаем столько элементов, сколько можем.
Аноним 24/11/15 Втр 18:41:47 #15 №588075 
>>588072
Только тут время n log(sum a_i), что меньше o(nk) для маленьких k. Ща еще подумаю.
Аноним 24/11/15 Втр 18:50:43 #16 №588085 
Кстати в наукаче есть тред про Computer Science. Говорят и с олимпиадными задачами к ним можно. Поэтому если в этот тред будут заходить только полтора умеющих решать задачки анона, то можно к ним перекатиться.
Аноним 24/11/15 Втр 23:33:29 #17 №588333 
>>588072
>для больших k
вот это ты хотел сказать.
Оригинально. Я просто через SMAWK решил т.к. матрица получается строго монотонная.
Аноним 25/11/15 Срд 00:38:25 #18 №588384 
Дан массив uint64_t, найти непрерывный подмассив с максимальным xor-ом. Т.е. подмассив l1, l2, ... lk такой, что l1 ^ l2 ^ ... lk максимально.
Аноним 25/11/15 Срд 16:25:04 #19 №588823 
>>588333
> Оригинально
На самом деле бин поиск по ответу - это стандартный асмовский прием, я его десятки раз писал. А про SWAMK первый раз слышу.
Аноним 25/11/15 Срд 16:50:40 #20 №588863 
>>588823
> SMAWK
фикс
Аноним 25/11/15 Срд 17:28:41 #21 №588895 
Лол, оп, задача в твоём посте очень простая, решил буквально за 3 минуты полным перебором, думал словлю таймлимит, но нихуя. Вот как я рассуждал. Во первых, сразу бери листочек и ручку и начинай придумывать примеры, я вот взял числа 6 и 30 и сразу увидел, что снизу вверх можно собрать уравнение, а потом перебором найти коэффициенты. Вот код, если интересно. http://pastebin.com/sRYe7kUz
Аноним 25/11/15 Срд 17:29:28 #22 №588896 
>>582265
Гарантируют, что оно ЕСТЬ. Учись читать условия.
Аноним 25/11/15 Срд 18:51:17 #23 №588948 
>>587586
>>587586
На checkio похожая задача есть, только там количество групп ограничено 2мя. И минимальной должна быть разница между суммами в них.
Аноним 25/11/15 Срд 22:40:52 #24 №589196 
>>588823
Ну SMAWK это тоже в некотором смысле "олимпиадный приём".
Есть матрица nxn с таким свойством. Если a[r1][c1] >= a[r1][c2], то для всех r > r1 a[r][c1] >= a[r][c2]
Найти в данной матрице минимальный элемент в каждой строчке за O(n)
Это и есть SMAWK
Аноним 26/11/15 Чтв 01:22:59 #25 №589366 
>>588384
Дерево отрезков?
Аноним 26/11/15 Чтв 01:27:32 #26 №589368 
>>588384
>>589366
То есть нужно модифицировать "Поиск подотрезка с максимальной суммой" вот в этой статье
http://e-maxx.ru/algo/segment_tree
Аноним 26/11/15 Чтв 02:03:25 #27 №589376 
>>589368
Ну а для тупых есть вариант с trie. Запихиваем все частичные xor-ы в trie, а после этого нам нужно для каждого частичного xor-а найти такой частичный xor, который бы при xor-е дал максимальный результат, т.е. в trie стараемся идти в 0 когда в исходном числе 1 и в 1, когда в исходном числе 0.
sageАноним 26/11/15 Чтв 10:22:50 #28 №589464 
Блядь, какое-то торжество олимпидодаунов, и их ещё не обоссали? Что ж! Я буду первым! Открывайте рот пошире, чтобы не пропустить ни капли!
Аноним 27/11/15 Птн 18:40:41 #29 №590623 
14486388410720.png
Чет никто не вбрасывает. Тогда я вброшу такую задачу с опенкапа недавнего. Это обобщение загадки о волке, козе и капусте на случай, когда животных много.
Аноним 27/11/15 Птн 18:41:05 #30 №590624 
14486388652070.png
14486388652091.png
>>590623
Ой, картинки не те.
Аноним 27/11/15 Птн 20:10:47 #31 №590663 
Кстати можно где-нибудь получить сертификат что я мастер алгоритмов? Как к нему готовиться?
только начал
Аноним 27/11/15 Птн 20:45:58 #32 №590685 
>>590624
И нахуя это нужно?
Аноним 27/11/15 Птн 21:26:52 #33 №590748 
>>590685
Что значит нужно?
Аноним 27/11/15 Птн 21:43:21 #34 №590762 
>>590748
Для чего вы это решаете? В каких проектах будете применять?
Аноним 27/11/15 Птн 21:48:49 #35 №590764 
14486501292620.png
>>590762
Для развлечения, очевидно.
Аноним 27/11/15 Птн 21:53:19 #36 №590775 
>>590762
>>590764
По крайней мере, я этим занимаюсь для развлечения. Возможно кто-то решает олимпиады, потому что хочет профессионально заниматься алгоритмами или чем-то подобным.
Аноним 27/11/15 Птн 21:57:38 #37 №590779 
14486506584460.jpg
>>590762
ЧО ЗА ГРАФЫ ТАКИЕ?
@
КРУЖКИ РИСУЕШЬ ЧТО ЛИ?
@
РАСКРАСКИ? КАКИЕ РАСКРАСКИ?
@
БЛЯ У МЕНЯ У ПЛЕМЯННИКА ТОЖИ РАСКРАСКИ ЕСТЬ))0
@
А ТЕБЕ-ТО 20 ЛЕТ, КАКИЕ РАСКРАСКИ, ТЫ ЧО ЕПТ))0
@
А ДЕВУШКУ СВОЮ ТЫ ГРАФАМИ БУДЕШЬ ЗАЩИЩАТЬ?)))0
Аноним 27/11/15 Птн 22:09:09 #38 №590787 
>>590779
>>590775
>>590764
Но ведь всё это - говно без задач. Учили бы лучше принципы построения грамотной архитектуры и всё такое.
Аноним 27/11/15 Птн 22:18:58 #39 №590790 
>>590787
Это учит мыслить out of the box. Современная архитектура, кстати, уже подгнивает. Индустрии требуется языки шестого поколения, потому что предыдущие уже не справляются с нагрузкой комплексностью.
Изобретать же новые инструменты будут не дрочители паттернов, а те кто смогут выйти за пределы текущей парадигмы.
Аноним 27/11/15 Птн 22:39:46 #40 №590803 
>>590787
Ты просто быдло. Я не знаю как объяснить. Ты музыку слушаешь? Тебе музыка как-то поможет деньги заработать, если ты не профессиональный музыкант?
Аноним 27/11/15 Птн 23:09:13 #41 №590828 
>>590803
Но я - профессиональный музыкант.
Аноним 27/11/15 Птн 23:38:49 #42 №590848 
>>590828
Ну ладно. Тогда я профессиональный математик, занимаюсь теорией графов, в своей команде по acm отвечаю за всякие графы и деревья.
[js-coder] Аноним 27/11/15 Птн 23:48:49 #43 №590852 
>>590848
А я Иван, сосу кукан))
Аноним 27/11/15 Птн 23:50:34 #44 №590855 
>>590848
Тогда тебе можно решать задачи про волка, козу и капусту.
Аноним 27/11/15 Птн 23:56:19 #45 №590858 
>>590855
Спасибо.
Аноним 28/11/15 Суб 03:36:49 #46 №590935 
Даунята не в курсе, что на собеседовании в любую нормальную компанию сейчас дают решать олимпиадные задачи, и спрашивают про математику и алгоритмы.
Теперь это подготовки к собеседованию в гугл тренд Аноним 28/11/15 Суб 18:23:18 #47 №591181 
Энтри левел. Дано n (очень большое) и m, найдите n-е число Фибоначчи по модулю m.
Аноним 28/11/15 Суб 22:31:47 #48 №591384 
>>591181
А m какое? За какое время надо решить?
Аноним 28/11/15 Суб 22:45:28 #49 №591390 
>>591181
Можно использовать формулу Бине (с корнями из 5) и быстрое возведение в степень. Если m и n взаимно простые, то по теореме Эклера можно найти обратный элемент. Время работы O(log n + log m).
Аноним 28/11/15 Суб 23:19:24 #50 №591414 
>>591384
m влазит в инт, ну как минимум линейное от номера числа.
Аноним 28/11/15 Суб 23:33:12 #51 №591420 
14487427930250.png
>>591390
>теореме Эклера
Какой обратный элемент, что ты несёшь? Быстрое возведение в степень по модулю, ты хотел сказать?
Аноним 28/11/15 Суб 23:55:39 #52 №591430 
>>591420
Ну в формуле Бине надо в конце делить на 2^n. А чтобы поделить на 2^n в кольце вычетов по модулю m, нужно найти обратный элемент, нельзя просто делить. А его проще всего найти по теореме Эклера (но если n и m не взаимно простые, то не получится).

Наверное, более простой вариант, последовательно вычислять числа по модулю m, пока пары чисел не начнут повторяться. Дальше просто находим период. Назовем его T. Ответ - это число с номером n mod T. Пары чисел начнут повторяться через O(m^2) вычисленных чисел, потому что есть m^2 / 2 различных пар элементов в Z_m. У меня есть подозрение, что они раньше начнут повторяться, но я хз как доказать.
Аноним 28/11/15 Суб 23:57:24 #53 №591431 
>>591430
> но если n и m не взаимно простые, то не получится
Фикс: 2^n и m не взаимно простые естественно. То есть m должно быть хотя бы нечетным.
Аноним 29/11/15 Вск 00:07:23 #54 №591439 
>>591430
Ок, с периодом Пизано закатит.
Аноним 29/11/15 Вск 00:40:06 #55 №591458 
http://ideone.com/0TGSWI а как же вариант через матрицы, который за O(log(n)) работает через школьную арифметику..
Аноним 29/11/15 Вск 00:41:15 #56 №591459 
>>591439
Ебать, оказывается это еще и назвали в честь кого-то, хотя этот результат придумывается за 5 минут любым асмщиком.
Аноним 29/11/15 Вск 00:42:22 #57 №591460 
>>591458
Бляяя, точно, чет не подумал.
Аноним 29/11/15 Вск 00:51:56 #58 №591464 
Пожалуй, продолжу. Задачка из facebook задавал индус
Кузнечик находится в (0, 0). После этого он делает n шагов. Шаг это - (+1, 0), (-1, 0), (0, +1) или (0, -1).
Рассмотрим множество всех его возможных путей. Их 4^n. Будем считать два пути различными, если множество посещённых координат различается.
Сколько всего уникальных путей у кузнечика, если он делает n шагов?
Нужно быстрее чем за O(n) и без преподсчёта.
Аноним 29/11/15 Вск 01:06:38 #59 №591477 
14487483982670.png
>>591464
Чет хуй знает пока что. Я спать пойду.
Аноним 29/11/15 Вск 02:04:55 #60 №591512 
>>591464
4 * 3 ^ (n - 1)
Аноним 29/11/15 Вск 02:12:02 #61 №591514 
>>591512
Или не. Наверное сумма этой хуйни от 1 до n, считать что n ^ 0 = 1.
Аноним 29/11/15 Вск 02:23:28 #62 №591516 
>>591512
За каждый шаг вариативность пути возрастает на 4 клетки.
Значит: n^4
Аноним 29/11/15 Вск 02:32:01 #63 №591518 
>>591516
Некоторые пути одинаковые по определению "различных путей". Например влево - влево - враво - влево и влево - вправо - влево - влево.
Аноним 29/11/15 Вск 02:35:15 #64 №591520 
>>591464
>>591464
Какая-нибудь формула из комбинаторики не подходит?
Аноним 29/11/15 Вск 02:38:22 #65 №591521 
>>591514
Я так подумал, это тоже не правильно. Нужно на каждом шаге (от 1 до n) высчитать количество путей которые не пересекаются сами с собой, и проссумировать.
Аноним 29/11/15 Вск 02:41:50 #66 №591523 
>>591521
Ох блядь, там еще нужно учесть пути соприкасающиеся с началом. Вот же индус.
Аноним 29/11/15 Вск 02:50:10 #67 №591529 
>>591464
>Будем считать два пути различными, если множество посещённых координат различается.
Хуйня кокая-то.
для n=2 путей 16 но уникальных только 12, ибо путь (1 -1 1) образует подмножество пути (1 1 1). И так 4 раза.
Т.е наверно нужно учитывать только самы длинные пути, ибо у них самы сильные множества.
Аноним 29/11/15 Вск 02:51:40 #68 №591530 
>>591518
Я уже понел, но чет никак не соображу формулу.
для n=3 у меня получилось 9*4 разных путей.
Аноним 29/11/15 Вск 03:13:48 #69 №591532 
Лол, походу задача сводится к поику площади прямоугольника с вершинами {n,n}{n,-n}{-n,n}{-n,-n}.
Ну сами посудите: любая крайняя клетка(принадлежит периметру) может быть достигнута за n шагов, любая внутреняя клетка не является уникальным путем, ибо ее координаты точно войдут в путь до края или станут конечными в путе-цикле(путь с повторами шаг - вперед шаг назад).

цыфры вроде сходятся.
Кароч формула: (4n) + 4 sum(1, n - 1)
Аноним 29/11/15 Вск 04:14:01 #70 №591553 
14487596417070.png
Вершины же по нулевой оси?
Аноним 29/11/15 Вск 04:19:20 #71 №591555 
>>591553 -> >>591532
И, кстати, в одну точку можно добраться разными путями без циклов. Например, вверх-вправо и вправо-вверх — точка одна, а путей уже 2.
Аноним 29/11/15 Вск 10:33:43 #72 №591603 
14487824232270.png
>>591512
>>591530
>>591532
по фразе "Нужно быстрее чем за O(n) и без преподсчёта." наверное можно понять что формулы там нихуя нет и надо писать алгоритм.
>>591529
>для n=2 путей 16 но уникальных только 12, ибо путь (1 -1 1) образует подмножество пути (1 1 1).
какие из слов "множества посещенных координат" тебе непонятны?
Аноним 29/11/15 Вск 12:36:17 #73 №591659 
>>591603
Че может подскажешь? Как-то вообще идей нет
Аноним 29/11/15 Вск 12:55:18 #74 №591675 
>>591659
Нужно думать out of the box.
Аноним 29/11/15 Вск 13:54:15 #75 №591711 
Нужен учебник олимпиадным задачам. Не алгоритмам, а именно задачам.
Аноним 29/11/15 Вск 16:22:07 #76 №591820 
>>591675
Я сегодня уже думал out of the box, когда твою мамку на секс разводил. Уже лимит думанья out of the box превышен.
Аноним 29/11/15 Вск 17:18:36 #77 №591844 
14488067165160.png
Поясните за функцию эйлера. Как этот код и формула связаны? В формуле от 1 отнимают единицу деленную на простое число что меньше единицы и это перемножают с другими результатами которые меньше единицы. Получается какое-то маленькое число которое умножают на n. И при чём тут этот код?
Аноним 29/11/15 Вск 19:45:48 #78 №591959 
>>591844
Скобочки начни раскрывать слева.
Аноним 30/11/15 Пнд 22:51:38 #79 №592906 
>>591844
Функция эйлера - это количество чисел меньше n, взаимно простых с n. Несложно доказать, что она мультиплакитивна. А какой-то арифметической формулы для нее нет. Код который ты привел вычисляет функцию Эйлера перебором. А что это за формулы - хуй знает.
Аноним 30/11/15 Пнд 22:55:06 #80 №592907 
>>591844
А нет, падажжи, я понял. В той формуле сверху пэ это простые делители, а альфа - их кратность. Но один хуй в коде вычисляется не по этой формуле.
‮минонА 01/12/15 Втр 00:01:38 #81 №592958 
>>592906
Во первых, там нихуя не полный перебор, а перебор с учётом формулы. Во вторых, того что она мультипликативна достаточно для вывода формул выше.
>>591844
Следи за рукой:
n(1-1/p1)...(1-1/pk) = (n - n/p1)(1-1/p2)...(1 - 1/pk) и так далее последовательным раскрытие скобок. Код делает то же самое - находит простой делитель n и раскрывает для этого делителя его скобку, а само n делит пока оно не станет взаимно просто с этим делителем.
Аноним 03/12/15 Чтв 15:33:56 #82 №594809 
>>591464
Ну дак че, как решать?
Аноним 03/12/15 Чтв 16:07:02 #83 №594832 
14491480229540.png
Как без массива решать? С решение в лоб меньше половины тестов проходит.
Аноним 03/12/15 Чтв 17:51:58 #84 №594919 
>>594832
это скрин с какого сайта?
Аноним 03/12/15 Чтв 17:53:56 #85 №594922 
>>594919
dl.gsu.by Ссылка не дам т.к. нужна регистрация она без инвайтов, но всё равно всем лень и так проще.
Аноним 03/12/15 Чтв 21:14:49 #86 №595138 
>>594832
Помогите.
Аноним 04/12/15 Птн 09:29:02 #87 №595341 
>>595138
Пожалуйста.
Аноним 04/12/15 Птн 13:16:13 #88 №595466 
>>594832
Где же все знатоки? Может там какой-то известный алгоритм из ДП, а я его не знаю?
Аноним 05/12/15 Суб 01:55:41 #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.
Мб как-то можно сократить множество проверяемых парков какими-нибудь тупыми корзинками по координатам.
Аноним 05/12/15 Суб 01:59:24 #90 №596143 
>>596141
Хотя, 100 миллионов это слишком дохуя для OJ, есть подозрение, что тут нужно что-то более хитровыебанное, либо тебе повезёт и на их тестах оно пройдёт. Хотелось бы увидеть правильное решение, ну ты попробуй, вдруг прокатит.
Аноним 05/12/15 Суб 02:54:48 #91 №596166 
Кажись, придумал решение, которое влезает всегда в TL.
Забудь про вторую идею с коробкой. Итак, для каждой строчки у нас есть набор интересных точек, их не более 400. Объединим интересные точки всех строчек. Их опять будет 400. Бинго! То есть мы можем из 10^5 столбцов оставить 400.
Теперь проведём такой же финт, но со строчками. Теперь у нас матрица 400 на 400.

После этого нам только нужно быстро уметь находить количество деревьев в данной точке. Просто для каждого прямоугольника проставляем правильное значение производной для каждой интересной точки - 400, а потом сканлайн за 400.
Получается, каждую строчку мы пробегаем за 800, строчек 400 - ответ за 320,000. Должно влезать в любой таймлимит теперь.
Аноним 05/12/15 Суб 11:41:03 #92 №596323 
>>596166
Не понял как это сделать. Что из верхнего описания ты выкинул, а что оставил?
Аноним 05/12/15 Суб 13:35:56 #93 №596389 
>>596323
Оставил подсчёт количества деревьев через производные. Выкинул перебор ненужных 10^5 строчек, оставив только 400.

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

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

Время полиномиальное.
Аноним 07/12/15 Пнд 22:53:50 #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
Аноним 07/12/15 Пнд 23:21:43 #99 №598573 
>>598557
Да, я так же решил.
Аноним 08/12/15 Втр 00:37:33 #100 №598618 
Дано дерево, у каждого ребра некоторый вес. Поступают запросы
1) Изменить вес ребра между u и v
2) Найти максимальное ребро на кратчайшем пути между вершинами u и v.

Давайте представим, что про HLD мы не знаем.
Аноним 12/12/15 Суб 12:42:27 #101 №601491 
Есть какой-нибудь учебник по олимпиадным задачам?
Аноним 17/12/15 Чтв 18:16:36 #102 №606046 
бамп
comments powered by Disqus