|
+22
|
|
0
У меня зашла такая байда: генерим около 10^7 рандомных подмножеств из первых 250 чисел и запихиваем полученные суммы в хэш-таблицу. Потом рандомно выбираем подмножества из других 250 чисел, пока не найдем с какой нить суммой, что есть в хэш-таблице. Ну, какой нить механизм восстановления подмножеств по сумме придумать не сложно. Я, например, сохранял 40000 случайных перестановок в массивчиках, а в хэш-таблицу складывал суммы по всем префиксам вместе с номером перестановки. Оно искало ответы чуть больше 5 минут. |
|
+13
Призываются боги Выпасаются овцы Триангулируются пирамиды Сбор ежей |
|
0
На самом деле, первое решение, которое пришло мне в голову, такое же. Но словами его объяснять дольше, поэтому… Лентяй я короче. |
|
0
Thank you, fixed |
|
-3
мобов бы |
|
0
вот так делать нельзя |
|
+3
я больше никогда не буду создавать указатели на объекты внутри векторов я больше никогда не буду создавать указатели на объекты внутри векторов я больше никогда не буду создавать указатели на объекты внутри векторов я больше никогда не буду создавать указатели на объекты внутри векторов я больше никогда не буду создавать указатели на объекты внутри векторов да, и оно все равно не прошло, TL7… |
|
0
я МКМФ писать не умею, взял е-максовский, ВА3. видимо у меня настолько кривые руки, что я не смог готовое прикрутить… |
|
+15
я писал дп на масках сначала поверим, что оптимальный способ свапанья следуюший: зафиксим паросочетание и последовательно для каждой вершины сверху (их мы рассматриваем слева направо) двигаем соответствующую вершину снизу слево. ок, теперь сама dp[mask] — наименьшее количество свопов, где mask — подмножество вершин 2 доли, которые мы потом подвинем до упора влево. пересчитываем так: для mask находим количество единичек ones и пробуем соединить ребром вершинку номер ones из 1й доли со всеми вершинками, что в маске mask во 2й доле и аккуратно считаем сколько свапов надо (исходя из dp для масок после выкидывания этой пары и, собственно, пары). из всех возможных “соединений” выбираем минимум. ответ в dp[11..111] |
|
Это еще что… У нас +4 по Н только по той причине, что в цикле нахождения всех делителей числа g я забыл проверить что итератор цикла, собственно, делитель g. Это решение как то 4 раза добиралось до 43 теста, а ошибку нашли только спустя пару часов… |
|
0
да, указателями тоже можно. когда я писал комментарий, идеи с указателями мне в голову не приходило (в том числе и из других комментариев). я лично решал сортировкой событий за NlogN. |
|
+8
because judge system loves Mike Mirzayanov too) |
|
0
ну их еще упорядочить надо. события то. хотя, можно их сливанием упорядоченных массивов посортить… тогда будет O(N). но зачем усложнять себе жизнь? |
|
-5
действительно, там же еще время есть. неверно понял условие, прошу прощения. видимо таки придется сет заменить на дерево отрезков по сжатому времени. |
|
-5
не важно, там бред |
|
+27
теги хорошие |
|
+58
прошло ровно 1000 человек о О |
|
+12
я думаю, что проходной балл будет ровно 4000 |
|
+15
О, я покраснел:) В первый раз в новой системе цветов. upd. кстати да, пересчет рейтингов 1го дива произошел до окончания тестирования 2го дива. |
|
+3
Я проверил точным решением :D Во всяком случае, системные тесты. Вот: 1235773 |
|
+5
|
|
0
You should sort all numbers inside every list (because lists like {2,3,1} and {1,3,2} should be equal) and use a trie instead of sorting all of lists. |
|
+26
It can be solved using trie that should implemented using hash-table (it is not hashing:) ). You can find list of friends for every vertex. Now you should sort all of them and insert into trie. In some vertices of the trie you can count a number of lists that end in such vertex. So, we have exact solution in O(MlogM) time with small constant. |
|
+16
сам решение не писал, ибо опоздал на раунд на 5 минут =_= как без хэшей — ну бор же. для каждой вершины находим списки соседей, сортим их и пихаем в бор. только на ребре будет уже написан не символ, а число. для скорости бор, видимо, на хэш-таблице надо писать. итого точное решение за O(MlogM) с маленькой константой upd. что то переходы на новую строку криво обрабатываются… |
|
+5
Не, там просто идет перебор некоторого параметра z чтобы все срослось. При больших n приращения z очень большие и решение тормозит. Но если два z для последовательных n поделить друг на друга, то они сходятся к тем числам, что вбиты в решение. Если перед тем как инкрементить, тупо домножать на них, то ускорение получается такое, что все заходит даже без прекалка. Короче, магия тут чисто для скорости. |
|
+14
а как нормально решать D? я написал тупой перебор, потом методом пристального взгляда увидел нетривиальную закономерность и оно даже зашло. вот оно: http://pastebin.com/aAfaBvED. ради смеха прошу обратить внимание на строки 107 и 109:D |
|
+3
пишем перебор для маленьких n, гуглим в oeis |
|
0
ок, значит я не умею писать компараторы. |
|
+8
ну, с ней решение зашло:) set же работал некорректно. мб, конечно, стоило просто написать нормальный компаратор, но не совсем понятно как он должен работать. |
|
+11
Вещество. У нас были некоторые проблемы с точностью из-за того, что мы складывали точки в set (один из худших случаев — когда все хорды пересекают одну горизонтальную (или вертикальную) и все точки будут отстоять от нее на +- eps и не совсем корректно сортиться). Потом мы стали засовывать точки в самописную хэш-таблицу (не надо сортить) и проблемы исчезли. |
|
+4
ну, еще можно заметить, что ответ всегда самый нижний LCA из этих трех. |
|
+12
мы нашли в шкафу витую пару и протянули себе халявный интернет из какой то компьютерной комнаты. правда на настройку всего этого мы угрохали половину смены, зато потом все чудесно работало. наверно сейчас все будет настроено заранее.
|
|
На AguL →
Региональный этап Всероссийской олимпиады школьников по информатике 2011/2012, 4 месяца назад
0
да, именно такое
прошу прощения за повтор, не особо вчитывался в комментарии |
|
На AguL →
Региональный этап Всероссийской олимпиады школьников по информатике 2011/2012, 4 месяца назад
0
на самом деле тесты были настолько слабыми, что проходило на 100 баллов, например, такое решение на с++:
читаем 1й и 2й наборы в стринги. потом проверяем для каждой строки из 1го набора какие в нем есть супрефиксы (в лоб с помощью метода substring, ага) и для всех найденных в мапе (map< string, int >, конечно же) делаем ++. теперь идем по 2му набору и выводим ответы, которые лежат в мапе. |
|
+18
в B надо просто взять точки из семпла и аффинными преобразованиями передвинуть так, чтобы 3 точки в плоскости xOy совпали с 3 точками на входе. ну и еще аккуратно отмасштабировать по оси z.
|
|
+23
Полностью согласен.
Например, для меня мотивом потавить + или - иногда были "что то много +" или "ну что ж человека то так заминусовали". Сейчас эти мотивы внезапно не имеют смысла. Суть в том, что тогда +/- ставились в соответствии с теми правилами игры, что были тогда. А менять правила игры уже сыгранной партии как то неправильно. Даже если исход этой партии ни на что не влияет. |
|
+9
особенно печально то, что я ее прочитал в начале 2го часа...
|
|
0
мой список сложности
|
|
+9
100 - квадратная:)
|
|
+11
Возможно, пригодится такая идея: сдвигать каждый следующий блок не на константу.
Ну, например: сначала сдвигаем на x, потом на x/2, x/4, x/8 и т.д. Или так: x, x/2, x/3, x/4 и т.д. Тогда и довольно хорошо видно кто за кем (особенно хорошо на маленьких уровнях вложенности), и вылезти далеко вправо несколько проблематично (надо очень много постов). |
|
+16
А вы не об успехах думайте, а о задачах. Не помню где читал что то вроде "если в команде больше говорят о том, какое место они займут, чем о задачах - дело плохо". Если вы пришли сюда только для того, чтобы докачаться до такого то уровня чтобы там что то там и потом еще крутые плюшки - вон отсюда:D UPD. да, предложенный мной вариант больше для контестов формата ACM подходит, не IOI. |
|
0
G еще можно запихать:D Дп по обычному профилю в лоб. Заметим, что валидных профилей толщины 1 - около 2000, профилей толщины 2 - около 100000, а толщины 3 - около 8*10^7. Предпросчитаем все валидные переходы для профилей толщины 3 в виде [номер профиля толщины 2]->[номер профиля толщины 1] и запишем в массив векторов. Будем считать dp[n][профиль толщины 2], используя предпросчитанный массив. Как считать - вроде бы очевидно)) Итого решение за O(n * 8*10^7) с мелкими хаками. Это работает около 4с.
|
|
-3
весит как утка))
|
|
+10
|
|
0
м... красиво. спасибо))
сейчас попробую доказать почему это не квадрат...)) |
|
+8
у меня такое решение |
|
0
можно узнать идею простого решения?
у меня решение на хэшах, про попроще будет суффиксных структур данных, но все равно не очень простое. |
|
-8
чорт... нашел кривое решение и не успел сделать взлом =_= upd. хм... оно прошло все тесты. но, тем не менее, оно валится. |
|
+11
Мое мнение - E должна быть рассчитана на то, чтобы ее сдали единицы за контест (ну то есть 0-1-2 человек). Вот и эту E один человек почти сдал (решение прошло претесты, а потом упало; но там мелкая бага была, в дорешивании он ее добил). Так что все очень даже удачно получилось:)
|
|
-3
да, спасибо, поправлю
|
|
+12
Ура! Присоединяюсь к поздравлениям.
|
|
+18
![]() =_= |
|
+5
да
|
|
0
ну, если бы все изначально было как надо, то исправить задачи можно было гораздо раньше и теоретически сдать с меньшим штрафом. так что тут уж как посмотреть... но все равно влияет.
|
|
+2
согласен :D
|
|
0
действительно. теперь понял различие.
|
|
+5
та же фигня))
теперь я отнимаю остаток от деления перед тем как делить |
|
0
не, случаи то a=1, b=1 не особенные, просто претесты другие стали и они свалили мое решение. upd. чуть выше выяснили, что таки особенные. |
|
+5
у меня лично был косяк с делением отрицательных чисел. потому что [x/a] для x<0 получается иногда на 1 больше, чем надо. Исправленное решение должно верно работать и для a=1 или b=1. upd. Ниже выяснили, что не должно... |
|
0
Например, на меня. Иначе бы мое решение упало на систем тесте.
|
|
0
я вообще не понял отличий между старой и новой задачей. И там и там одинаковые решения. Или я не прав?
|
|
+4
А кто смотрел недавние Врата Штейна?
Я тут буквально сегодня за ночь посмотрел. Ооо... меня проперло)) В восторге, можно сказать. По атмосфере чем то напомнило хигурашей. Ну и еще тетрадь смерти по изощренности сюжетных ходов. Но, в отличие от двух упомянутых, здесь концовку не зафейлили. да, мне нравятся нестандартные, нетривиальные и изощренные вещи |
|
+3
Вот одно из лучших аниме, что я смотрел. Короткометражка.
|
|
+1
Я смотрю, но в последнее время все меньше. Сейчас руки как то уже не доходят искать выбирать действительно хорошие вещи. А на что попало время тратить не охота...
|
|
+1
От себя могу посоветовать FLTK (работал только с версией 1.3). Экзешник под винду получается 300-400 Кб, все линкуется статически. Наверно можно ужать еще больше. С лицензией все хорошо. Под MSVS работает. Могут быть небольшие проблемы с кириллицей, но это лечится.
Если все нужно ужать очень экстремально - только WinAPI на ум приходит. |
|
На MikeMirzayanov →
Mirror of ACM-ICPC NEERC Southern Subregional Programming Contest 2011 (Saratov QF), 7 месяцев назад
+5
for testcase aaaabcdefghij answer is 1 3
in the all rest you are right |
|
На MikeMirzayanov →
Mirror of ACM-ICPC NEERC Southern Subregional Programming Contest 2011 (Saratov QF), 7 месяцев назад
+5
Во первых, найдем центр дерева. Центр - это середина какого либо из диаметров. Если он на ребре - запомним вариант ответа, когда мы стягиваем это ребро, а потом разбивьем это ребро на 2 куска с очень большой стоимостью.
Итак, центр дерева в вершине. Выкидываем из дерева все ребра, что не входят в диаметр и подвешиваем на центр. Полученное дерево мы назвали "веник":) ибо все пути от центра до листьев одинаковые. Дальше вполне себе очевидная динамика на венике - наименьшее количество денег, которое надо потратить чтобы на любом пути от вершины до листьев было хотя бы одно удаляемое ребро. Пусть мы все посчитали, ответом будет сумма дп по детям корня минус максимум по детям корня. Дальше остается только построить ответ (не забыв при этом про случай когда центр был на ребре). |
|
0
А, ну да, дифференцированием можно
А как нибудь красиво это доказывается?:) |
|
0
В задаче B я пользовался предположением, что в оптимальном решении наши палки - это хорды окружности с центром в основании березы. Предположение оказалось верным. Кто нибудь может доказать это предположение?
|
|
0
не туда |
|
+10
надо чтобы
Z[k].FI = -o_O+1 |
|
+6
как то так:
sort(Z+1, Z+n+1); cout << 5 << "\n"; cout << -o_O << " " << o_O << "\n"; cout << -o_O << " " << -o_O << "\n"; cout << Z[k].FI << " " << -o_O << "\n"; cout << Z[k].FI << " " << Z[k].SE << "\n"; cout << Z[k].FI-1 << " " << o_O << "\n"; |
|
+16
мы доказали. причем оказалось, что во время контеста доказали криво, но оно зашло) после контеста осознали, что доказательство кривое и нашли верное.
стратегия для 1го игрока: если есть нечетный делитель n, то возьмем такой наименьший (скажем, k) и периодом k закрасим вершины 1м ходом. тогда все оставшиеся вершины развалятся на циклы длины n/k с периодом k. несложно показать, что теперь при любом ходе мы будем закрашивать вершины только в одном из таких циклов. ну и все - первый игрок для себя делит оставшиеся циклы на пары и симметрично повторяет ходы второго игрока. если начетного делителя нет, то n=2^x. по сути все вершины можно разбить на 2 цикла в периодом 2 и они будут работать как и в 1м случае. тут 2й игрок пользуется вышеописанной стратегией 1го игрока. ну и еще случай когда ходов вообще делать нельзя (n простое) тривиален - тут выигрывает 2й игрок. |
|
0
о, круто, спасибо)) будет что дорешать.
а то я персистентное дерево отрезков только один раз в жизни писал. |
|
0
я в H даже на С++ побоялся сортировку делать, сделал в виде массива списков. В итоге получился чистый квадрат:) Но от этого мне задача даже больше нравится.
|
|
0
да не, я походу даже не прочитал этой задачи, а даже если и прочитал, то не вникал)) я смотрел по монитору что сдают, потом читал, потом писал и сдавал. у меня были еще 2 задачи, в которых решение как бы очевидно, оставалось только написать, но там персистентных деревьев отрезков не было.
наверно, это была задача I:) сейчас посмотреть не могу, условия на другом компе остались. зы. интересно, можно ли будет где задачи дорешать? |
|
0
оу, до такого я во время контеста не дошел...
|
|
0
в F можно было и не хэшировать, а работать с объектами в 9 интов. все чудесно лезет и по памяти и по времени.
|
|
0
вообще задача B и была самая противная)) в остальных ловушек в разы меньше.
просто иногда надо пользоваться такой особенностью правил, что задачи можно решать не по порядку... |
|
0
Да... Интернет тур укороченный (ну, я еще начал решать минут через 40 после начала, но это уже мои проблемы:) ), в последние полчаса были жуткие лаги. Это несколько подпортило впечатление.
А задачи понравились:) В меру интересные и много подводных камней. Если бы не предыдущий мой абзац - был бы конфетка контест. |
|
0
уже не важно... |
|
+20
Я тоже присоединяюсь к поздравлениям!
В качестве продолжения темы: я и мой сокомандник имеем дни рождения в полностью противоположные дни года (то есть разница ровно 6 месяцев). Этакий пример полного дополнения. Возможно, это тоже все не просто так... |
|
0
Мне думается, что это промахи кэша в бинпоиске.
|
|
+6
http://olimpic.nsu.ru/widesiberia/archive/wso12/2011/rus/index.shtml
оттуда: Начало тура в 10.00 по московскому времени. |
|
0
В университетах вообще мало чему полезному учат:)
WinAPI это написание кучи кода, а MFC представляет собой страшную лапшу с костылями. Хотя, возможно, для калькулятора будет нормально. В WinAPI, в общем то, полезно поковыряться. Ибо все гуишные библиотеки по сути обертки над этим API. Но начинать с него не стоит. MFC же интересен разве что своей историей. Просто это своего рода первопроходец - тогда ничего другого не было, а новые фичи добавлялись по мере их надобности. В итоге получилось мясо. Сейчас есть другие более удачные библиотеки. |
|
На Igor.Ivanich →
Find a Hamiltonian Cycle when each vertex of the graph has degree >= N / 2, 8 месяцев назад
+10
Let's arrange all nodes by circle. Let A and B are two consecutive nodes that are disconnected. So we can find consecutive nodes C and D for that pairs (A,C) and (B,D) are connected (you can prove it using Dirichlet principle and fact that degree of every node >= n/2). So, just reverse arc BC (rearrange all nodes of it in reversed order). You will increase number of connected pairs on the circle at least by one. After no more than n operations you will get hamilton cycle on the circle.
|
|
0
Для вас только VCL в Borland Builder 6:)
А вообще, еще можете попробовать Qt wxWidgets GTK+ FLTK FOX Toolkit WTL Ultimate++, наконец. WinAPI пока не пробуйте MFC не пробуйте вообще;) Но во всех этих случаях надо курить документацию и мануалы, которых иногда почти нет. Я сам для себя выбрал FLTK под MSVC++. |
|
0
Не, WA20. Ошибку так и не нашел.
|
|
0
Ну и еще что можно добавить по этой задаче: кратчайшие пути в минкосте очень удобно искать алгоритмом Форда-Беллмана (ограничения позволяют). Моя Дейкстра в потенциалами так и не зашла (да, это те 17 неудачных попыток XD), а Форд-Беллман зашел сразу. Возможно, там еще хорошо проходит Левит.
|
|
0
Мне очень не хотелось разбирать случаи. UPD. Как оказалось, руки не при чем, это все тормозной stl. vector -> массив дает AC =_=. |
|
0
Спасибо автору за контест.
Понравилось все, кроме задачи А. Писал ее полчаса и получившаяся фигня в конце концов упала. Наверно там есть простое решение, но оно мне как то не очевидно. Чуток не успел дописать D. Ждем дорешивания. |
|
+1
не туда |
|
0
я сначала искал цикл. если его нет - ответ -1.
иначе возьмем цикл. если 3 его вершины подряд образуют цикл длины 3 - выводим его. иначе мы можем наш цикл уменьшить на 1 (ну там ребро так идет для этих 3х вершин). ну и так далее пока или не найдем сразу длины 3 или пока не сожмем большой цикл до длины 3. думаю, нигде не накосячил и это пройдет. |
|
+3
просто не делай больше 99 тестов:3
|
|
0
omg... thank you)) i fixed it
|
|
0
Yes, my mistake. I'll fix it.
|
|
0
звучит правдоподобно))
|
|
-1
Sum of sizes less than 30KB. Don't panic, please)
|
|
+16
Yes.
|




