Основные ресурсы с задачками: codeforces.com - Клевый проект, чуть ли не еженедельные контесты. Система писькомерства рейтинга уровня ELO с Короткевичем 4к+. Задачки своеобразные, пилятся комьюнити, мало общего с задачками стандартного ACM, что продиктовано форматом соревнований. Так же codeforces выбирают площадкой для множества престижных соревнований уровня VK Cup, в тренировки заливаются все крупные контесты оффлайн. acm.timus.ru - великолепный архив. Решишь 500 задач на тимусе - будешь гарантированно красным на кфе informatics.mccme.ru - хорош для новичков Дальше идут ресурсы, которые оп не юзал особенно по своему скудоумию: acmp.ru - ничего сказать пока не могу TopCoder.com - пендосский codeforces, регулярные контесты, открытые турниры и тому подобное e-olymp.com - не знаю
F. A. Q. Что почитать? Грэхэм, Кнут, Паташник "Конкретная математика" Кормен "Алгоритмы. Построение и анализ" ... Как вкатиться? Читай книжки сверху, и решай как можно больше
Шапка за пять минут, надеюсь треду жить, принимаются предложения по оформлению
Открою тред насущным вопросом. Есть задача, в которой мне надобно в отсортированном в порядке неубывания массиве найти подотрезок заданной длины и с заданной суммой. Причем, таких запросов может быть порядка 2x10^5, и элементов в массиве столько же. Я знаю, что можно написать дерево отрезков и для каждого запроса бегать по этому дереву и получать сумму за log, но это в целом дает ассимптотику m n logn, что неприемлемо для ограничений (2 секунды)
>>706325 >>706304 (OP) Да, про теорию я, кстати, забыл. http://hecs.info - поделка школьников - олимпиадников, попытка собрать все в одном месте http://e-maxx.ru - великолепный ресурс, кладезь понятнейших описаний алгоритмов и структур данных http://neerc.ifmo.ru/wiki - описания более академичны http://wikipedia.org - как ни странно, алгоритмы в статьях на русском языке представлены очень и очень неплохо Достаточно много полезной информации можно получить из блогов на ресурсах из шапки. Информации не только по решению задач, но и по сопутствующим темам вроде стратегии на контесте и т.п.
>>706313 Деревья не нужны. Сделай массив частичных сумм s = a[1] + a[2] + ... + a С помощью них вычислить сумму отрезка m..n можно как s[n] - s[m-1]. Массив у тебя отсортирован, и это надо использовать. Благодаря упорядоченности сумма отрезка будет монотонно возрастать по мере сдвигания начала отрезка к концу массива. Похоже тут у нас работка для бинарного поиска.
>>706313 Если точно задана длина отрезка и нужна сумма, то высчитываешь среднее (сумму делишь на длину отрезка). Находишь в массиве это число или ближайшее меньшее. Это число будет концом отрезка - проходишь к началу массива на нужное количество элементов и высчитываешь сумму (сам отрезок не нужно хранить - только сумму и индекс конца). Проверяешь сумму - если равна то все. Если меньше то сдвигаешь отрезок - увеличиваешь индекс конца, прибавляешь к сумме новый елемент и вычитаешь старый (тот что вылетел). Снова проверяешь сумму и если надо повторяешь. Если сумма стала больше искомой то отрезка нет. Правда сложность сложно определить, она зависит от скорости роста значений елементов массива.
>>706353 У тебя нет гарантии на то сколько тебе времени прийдется двигать отрезок. Можно (скорее всего) подобрать такие входные данные что бинарным поиском найдешь конец отрезка в самом начале массива и потом будешь двигать в самый конец, тоесть в худшем случае получается m n logn, но для этого значения в массиве должны почти не изменятся. А если значения более-менее возрастают то тогда да, получается m logn. Для худшего случая можно как-то модифицировать алгоритм, например двигать отрезок не сразу по одному элементу, а например, после первого найденого (бинарным поиском) елемента, начать от него перескакивать сразу на несколько десятком или сотен (в зависимости от размера) элементов пока не убедимся что дальше сумма больше - и тогда уже можно искать точнее сдвигая по одному элементу.
>>706332 В смысле "расписания"? На хаккерранке соревнования тоже по расписанию. Есть задачи которые проссто можно решать - но на КФ тоже же (вроде) можно.
>>706651 Нет, это просто обычное хобби. Бывает, на собеседованиях что-то олимпиадное дают, но обычно самое простое. Работодателю даже более интересно будет посмотреть, как ты будешь пытаться решить, а если ты ему сходу алгоритм выдашь уже известный тебе по каким-то причинам, то все скучно
>>706794 У меня сосед был, с 7-го класса брал призера, а в 11-м победителя. Как-то писал КФ при мне, решил то ли 3 задачи, то ли 2. Может, конечно, несерьезно подошел.
>>706809 На кфе немного своя специфика-таки. И времени меньше, и задачи менее идейные. Есть знакомый математик, который в девятом классе выиграл всерос по математике, решив там все задачи. По программированию он тоже на всерос ездит и берет там призерство за счет идейных задач. Я даже не уверен, напишет ли он сам Декартку или ДО
Я ньюфаг, записался в ВУЗе на курсы, щас тренируют на acmp, говорят, что потом нужно на Тимус с Кодфорсами переходить. И у меня возник вопрос: какова сложность задач на олимпиадах (на том же acm) по сравнению с acmp? Если я решаю на acmp задачи сложности 30-40% это же все хуйня по сравнению с олимпиадами?
>>706979 Представь граф, в котором все команды - вершины, а рёбра соединяют команды, сыгравшие друг с другом хотя бы один матч. Теперь забудь про этот граф. Тебе понадобится другой - в котором ребра соединяют команды, НЕ игравшие друг с другом. В этом втором графе тебе надо найти связный подграф размера K. Пишешь Брона-Кербоша, с тем отличием, что тебе надо находить не максимальный связный подграф, а первый попавшийся размера K.
>>707059 3 курс ФИВТ МФТИ, преподает в Мытищинской школе программистов, уже год вроде. 3-х учеников поднял до финалистов - победитель/призер/призер. Может уже и перебрался куда, связи не имею с ним.
>>707184 Ну вообще я надеялся, что там до бектрекинга не дойдёт. Но ты прав, на это полагаться нельзя. Надо использовать тот факт, что у каждой вершины 2 ребра. Это значит, что граф целиком состоит из циклов. Надо найти все циклы, и из каждого убрать по одному элементу.
>>707003 Как тут вообще строить граф по стольким данным? 100000 матчей - это 50000 команд. По идее тут не пройдут алгоритмы хуже линии. Может какая хитрая маска.
>>707255 Берёшь случайную вершину V1, произвольно выбираешь одно из её рёбер. Переходишь по этому ребру в V2. У V2 два ребра. По одному ты пришёл, а другое ведёт куда-то ещё. Переходишь по второму ребру и т.д. Рано или поздно ты вернёшься в V1. Это значит цикл замкнулся.
>>707270 Как ты его хранить будешь, скажи для начала. Вектор векторов или 2д-массив булов? Размер инверсированного графа в любом случае будет 50000*50000=2500000000=2.5 гига. Я про это писал.
>>707272 Про Брона-Кербоша идея неудачная, как правильно заметил >>707184 Но не потому что проблема представить граф. Его на самом деле не надо хранить в явном виде. Достаточно хранить комплементарный граф >в котором все команды - вершины, а рёбра соединяют команды, сыгравшие друг с другом хотя бы один матч Это будет просто другое представление графа в памяти. Все нужные операции можно делать и с таким представлением.
>>706841 else if (max_heap.size() > min_heap.size()) return max_heap.top(); else return min_heap.top(); из нижней части нужен максимальный элемент, а из верхней минимальный. А ты берёшь из обоих максимальный. На самом деле тут достаточно очереди для верхней половины списка и одного значения для нижней. Первые (n-2)/2 элементов не могут повлиять на результат, их не надо хранить.
Всесибирская в этом году - лютая параша. Ощущение, что просто пропихивали своих учеников в победители. На проверку принималось 3 языка, на компах не было нормальных сред разработки. Год подготовки коту под хвост. Намного приятнее было писать всеросс, организация на высоте, соревнование не предполагало знания какого-то конкретного ЯПа, интересная система начисления баллов. Хоть тут победителя получил.
В общем, мы тут решили конкурс-олимпиадку запилить на 4 недели. Пока только наброски идеи и правил: https://my.mixtape.moe/osxgjw.txt Критика (кроме сообщений о кривой кодировке) приветствуется.
>>708581 и я о том же. поэтому и готовился к всесибу (собираюсь в НГУ). задачи к слову были куда проще, чем на всероссе, даже краевом. знания алгоритма рекурсивной заливки и флойда-уоршела хватило бы для решения всех задач, остальные "идейные". теперь только егэ сдавать на 100, и все в тот же нгу.
>>708418 Как понять нет денег на всеросс ехать? У кого нет денег? Поступай в УрФУ вместо москвы, там очень крутой тренер асмщик Миша. В Москве ты не пробьешься в команды.
>>708671 денег нет доехать до Москвы. я живу в Алтайском крае, тут билеты до Москвы стоят 2 месячные зарплаты. И я не планирую дальше заниматься acm, раньше рассматривал только как способ поступления в топовый вуз, например НГУ
>>708717 регион. а я живу в наверное, самом бедном регионе страны. тут на уличное освещение то денег не находится. в прошлом году >>708711 стоимость билета одна. и в прошлом году в Инополис на роботехнику пришлось ехать через Москву (хз почему так)
>>709634 полезная вещь в плане освоения некоторых тонкостей языков, навыков поиска багов, доказательства решений и знания алгоритмов но действительно дрочка
>>710455 Да. Дельта рейтинга зависит от рейтинга участников, которых ты опередил. Был баг, что сам участник всегда был в этом списке. И турист всегда фактически обыгрывал чела с 4000+ рейтинга.
>>711293 Потому что и то, и другое являются интеллектуальными занятиями. Нередко бывает, что олимпиадники-предметники играют в ЧГК, шахматы или еще что подобное.
>>711315 Программист-олимпиадник, неплохо играю в шахматы, в ЧГК тащу с командой. Вещи эти не сильно связаны между собой. Тут скорее объединяет общий вопрос: любишь думать?
>>711350 >дроч схем, дебютов, эндшпилей, мидшпелей. А как же шахматы Фишера, не слышал что ли? Даже в нашей деревне в них в школе рубились, чтобы вывести на чистую воду соперника, который постоянно одной и той же тактики придерживался.
>>713007 Ну пиздец. Вижу в прошедших контестах VK Cup 2016 и VK Cup 2016 - Round 1. При этом напротив "VK Cup 2016 - Уайлд-кард раунд 1" активна кнопка зарегистрироваться. Что это значит, я всё-таки могу участвовать? Лезу читать детали, раскапываю что требуемый возраст от 14 до 23, да и вообще я со своим пустым профилем иду лесом. Зачем прятать эту информацию так далеко? Почему нельзя убрать кнопку "зарегистрироваться" у тех, кто не проходит по условиям?
I am dissapoint.
Ещё и моих любимых языков нет в их списке. Ну нафиг этот codeforces.
>>713113 На кфе пустой профиль пока. Занимался в универе не слишком активно, потом работал программером 3 года. Год назад контора закрылась. Надрачивался в основном последний год.
Кто может идей как решить задачу "reverse rmq"? т.е. вместо массива и следующих за ним запросов нам даются только запросы с ответами на них, и по этим данным должен дать подходящий вариант массива
>>713426 Ну если навскидку, то идёшь по индексам массива, для каждого индекса проверяешь в какие ренджи он попадает, и пишешь наибольший из их максимумов.
>>713439 Собственно, прямой перевод: сканирующая прямая.
Короче, я имел в виду сортировку запросов, и дальше мы идём по индексу итогового ответа и поддерживаем текущие запросы, по ним строим число в этом месте или говорим, что ответа нет
Помогите осознать простенькую динамику. Я-то сам умею только считать количество способов дойти куда-то в n-мерном пространстве за k шагов, а тут еще за каждый шаг дают разное число очков и его надо максимизировать. Если конкретнее, то есть полоска из клеток, у каждой клетки есть приз, и каждый из k ходов мы должны либо уйти на x в одну сторону, на y в другую или вообще на месте. Как тут переходы должны выглядеть?
>>713738 Есть полоса из клеток. У каждой клетки приз за то, что наступаешь в нее. Есть k шагов. Каждый ход идем в клетку, которая лежит в х клетот слева, или в y справа, либо вовсе остаемся на месте и снова получаем очки, будто мы только что пришли в эту клетку. Теперь надо максимизировать наш счет
>>713816 Вроде обычная двухмерная динамика по индексу клетки и по номеру хода, очередной ход пересчитывается через предыдущий. Здесь, почти как и в любой динамике, прокатит рекурсия с мемоизацией.
>>713853 Ну да, кушает, ограничений-то мы всё равно не знаем. >>713856 Как говорится, переход очевиден. Пусть прошло М шагов, мы рассматриваем клетку К. D - динамика, А - бонусы. Тогда мы к D[M+1][K-x] прибавляем D[M][K]+A[K-x], остальные два перехода по тому же принципу.
>>713875 Не прибавляем, а обновляем значение, если новое больше старого, или если D[M+1][K-x] было не инициализировано. Да и на D[M][K] надо для начала посмотреть, инициализировано ли оно.
>>713907 Нулями некорректно. После первого хода ты можешь достичь 3-х ячеек, а с нулями будет выглядеть будто ты оказался и в этих трёх, заработав сколько-то, и достиг всег остальных, заработав 0. -INF можно, но некрасиво. null самое то.
>>713913 На олимпиадах красота никого не интересует... Что нулями некорректно, я отлично понимаю, просто сказал два самых частых решения. Ещё иногда -1 используется, вместо null.
>>713875 >>713878 Спасибо огромное, но не объясните ли вы, почему этот алгоритм не вырождается в обычную жадность? Разве мы не локально для каждого прыжка выбираем самый выгодный ход?
>>714246 Интуитивно можно пояснить, что алгоритм не вырождается в жадность, потому что при количество_ходов->∞ самая выгодная стратегия это кратчайшим путём добраться до максимально выгодной клетки и стоять там. При уменьшении количества ходов сначала решение может перейти в поход до самой выгодной клетки по самому выгодному пути, при дальнейшем уменьшении уже вообще непонятно что будет, всё ближе и ближе к результатам жадного алгоритма. Надеюсь, стало чуть более понятно, я имею опыт только таких полуинтуитивных догадок, почему в одной задаче жадник, а в другой динамика.
Закрой ты уже доки по J, в самом деле, и забудь о нём навсегда.
>>714252 Я понимаю, почему эту задачу не решить жадностью, но не понимаю, почему работает такая динамика, где мы просто каждый ход выбираем самый выгодный следующий Что не так с J?
>>714254 О, это уже намного проще пояснить. Сначала, очевидный факт, что решение для N шагов зависит только от решения для N-1 шагов. Дальше ты доказываешь корректность перехода так: во-первых, такой переход не ухудшает ответ, во-вторых, лучше сделать нельзя, следовательно, он оптимальный.
Это совсем кратко, но в общем это схема типичного доказательства перехода.
>>714259 Для хардкорной практики придумывания и доказательства динамики есть прекрасная задача "Казино": всерос 2005, финал, день 1, задача С; №11 на informatics.mccme.ru.
>>714261 Ага, гляну. А еще такой вопрос. Мне для следующей итерации, какую клетку считать новой стартовой? Неужели просто ту, на которой я отхвачу максимум очков в предыдущей итерации?
>>714295 Да, я уже написал. Каждый раз загоняю в вектор возможные стартовые клетки и от них стартую. Ва на тесте 8 - это на что похоже? Переменные, где может быть переполнение, вроде уже проверил
>>714299 Зачем ты их загоняешь куда-то?? У тебя есть массив динамики, сначала ты инициализируешь позиции перед первым ходом как надо, например, в нужные клетки ставишь 0, в остальные -INF. Тогда при пересчёте ты вообще не паришься, пути из неправильных клеток всё равно дадут отрицательные значения и в ответ не попадут. Только тогда надо учесть, что все состояния динамики на каждый ход надо тоже сначала поставить -INF.
Терпеть не могу геометрию. Если нам задан выпуклый многоугольник координатами его вершин вдоль обхода, то как найти самую длинную диагональ быстрее, чем за квадрат?
>>715014 Берем две(или три если точки трехмерные) оси (90 град одна относительно другой), проецируем на них все точки. Ищем на осях крайние точки - это будет потенциальные длинейшие диагонали.
>>715155 Засада. Предлагаю вбить костылей и добавить еще две оси по 45 град. к первым. Инфа 146% этого точно должно хватить!
Хотя может лучше из рандомной грани оси брать. Полик выпуклый - значит примерно на 1/4 граней приходится поворот на 90 град. Значит оптимально, брать перую, n*1/4 и их перпедикуляры.
>>715014 Скорее всего если взять какую-то вершину, и потом по очереди смотреть длины диагоналей по очереди, то они будут сначала расти а потом падать (на выпуклом многоугольнике). Тоесть можно искать чем-то типа бинарного поиска.
>>715014 Берём любую вершину, ищем для неё противоположную. Дальше, из очевидных соображений, если мы первую вершину сдвинем на 1 по часовой (то есть возьмём следующую вершину), то для этой вершины ответом будет являться либо уже найденная противоположная, либо эту противоположную надо будет так же сдвигать по часовой стрелке. Таким образом, если у нас есть список вершин в порядке обхода по часовой стрелке, то нахождение диагонали занимает линейное время, так как первая вершина пройдёт полный оборот, и противоположная ей суммарно пройдёт тоже ровно 1 оборот.
Обход по часовой стрелке строится за O(NlogN) построением выпуклой оболочки, например, хотя может оказаться, что это пушка по воробьям и тут можно проще.
Не прошёл, лол. Решил первые две. Долго тупил над второй, и на третью не хватило времени. Хотя понял её быстрее чем вторую. Убираем тех, в кого нет входа, в оставшемся графе находим петли. Посадить в круг можно либо петлю в полном составе, либо пару + входящие в неё с каждой стороны цепочки.
Во второй довольно быстро понял, как найти диагональ, но после этого застрял. Мне казалось, что надо восстановить сетку полностью. Где-то час я ломал голову как это сделать. Пытался рекурсией - убираем первый столбец и первую строку, и решаем меньшую задачу. Но соснул на этом пути.
Что дают подобные занятия, кроме удовлетворения фаллометрии? Ни одна из этих задач на практике не пригодится. Хотя алгоритмы это нужная тема, если ты не вебмакака, но тут они слишком уж оторваны от жизни Пост не вброс. Просто никогда не занимался олимпиадным погроммированием.
>>718829 Занимаюсь олимпиадной прогой 5 лет, по сути, так и попал в программирование. Мне это помогло научиться программировать, искать баги, писать код нормально и понятно (потому что как раз на олимпиадках пишешь код настолько блевотно, что больше никогда так делать не хочется, и понимаешь, что никто это не поймёт даже через 5 минут). Алгоритмы дали понимание оптимизации программ, использование оптимальных структур, понимание вообще как это работает в глубине, желание сделать покрасивее и в то же время быстро рабочим. В целом, ящитаю несколько лет олимпиадной проги намного полезнее нескольких лет фронтенда, ну только если ты на фронтенде не собираешься сидеть всю жизнь.
Если ты уже более-менее понимающий программист, то тебе это нахуй не упало, ну разве что немного алгоритмы подкачать, но как начало самое то для некоторых.
>>718843 Вот проблема только лежит в переходе между началом и дальнейшими действиями.
Вопрос ко всем тут: я сейчас заканчиваю десятый класс, балуюсь олимпиадками на среднем уровне, во всех рейтингах-таблицах уровня выше районного стабильно в серединке. Но я отдаю себе отчет в том, что мои некоторые скиллы в спортивом программировании нахуй не сдались в том, что называют промышленным программированием. И для меня сейчас остро стоит вопрос о переходе к такому виду работы. И если с олимпиадками все просто - задач пруд-пруди, то на чем мне практиковаться на начальном уровне в обычном программировании я ума не приложу. Наверное, я безыдейное говно. Вот как олимпиадники вообще существуют в ит-структуре?
>>718974 Допустим я познакомился с крестами только для олимпиад. Я знаю синтаксис, знаю стл. ООП мне нахуй не нужен был до этого. Теперь я хочу познать ооп, прочитал я пару глав книжки. Что-то понял. Но как мне это закрепить на практике? Один раз писал условный класс time, но это же, писец, скучно. Ничего интереснее не найти?
>>718977 Что там в ООП учить-то. Если очень хочешь, то придумай себе проект какой-нибудь, например, обработка русского текста.
Я на ООП никогда внимание не обращал, интересовался новыми фичами, а теперь мои кресты никому и не нужны, на работе почти всегда на питоне пишу, иногда шарп ещё.
>>726265 Нет, но вероятнее всего, что ты однажды напорешься на то, что твоих мозгов не хватит, чтобы придумать какую-то структура данных или алгоритм, но которые уже описаны умными людьми. Это полезно
>>726265 Все не нужно, в олимпиадках используется подмножество алгоритмов, то что легко и быстро написать. Но что-то нужно посмотреть обязательно, ты не можешь в одиночку придумать все что придумало человечество за 60+ лет, кем бы ты там небыл.
Сколько задач нужно решить на тимусе, чтобы можно было уже пробовать себя на кодефорсес, чтобы рейтинг сразу в парашу не скатить? Вообще, стоит ли прорешивать тимус?
>>726330 >Давно тренируешься? Ну сотку это я переборщил. Где-то 60. Перед вузом пару месяцев поигрался. На самом деле, на этом уровне почти нет серьезных алгоритмов. В основном матеша и смекалка. Когда встретился с победителями/призерами всероса, потерял мотивацию продолжать.
>>726340 > В основном матеша и смекалка. Когда встретился с победителями/призерами всероса, потерял мотивацию продолжать. на всеросе можно взять диплом, не написав алгоритма сложнее бинпоиска, атвичяю. одноклассник так и сделал
>>726400 Ебать охуенный чувак был. Просто взял и опустил в парашу мамкиных корзиноидов, которых дрочили со школьного возраста. До сих пор бомблю со всяких "одаренных детей", у которых на проверке оказывается мамка/папка либо сорт оф ученые/преподы, либо бохатые и наняли корзине репетиторов. В то время как плебс продолжает в неведеньи кушать убогую школьную программу.
>>726690 > а проверке оказывается мамка/папка либо сорт оф ученые/преподы, либо бохатые и наняли корзине репетиторов. такие одаренности далеко всё равно не идут. а если идут, то шли бы и без мамок-папок-репетиторов
>>726727 >такие одаренности далеко всё равно не идут На чугунной жопе как раз и идут. Думаешь, все спортивные программисты гении что ли? В основном они стали такими благодаря долгой задрочке, и под присмотром наставников. >то шли бы и без мамок-папок-репетиторов Увы, но такое бывает редко. "Маменькиных сынков" больше на порядок. Каким бы ты не был талантом, но без ресурсов и вовремя преподнесённых знаний ты пролетаешь.
>>726747 > без ресурсов "ресурсы" и "мамка/папка либо сорт оф ученые/преподы, либо бохатые и наняли корзине репетиторов" -- разные вещи. некоторым хватает просто некоторой поддержки, а не последнего
> Думаешь, все спортивные программисты гении что ли? топовые -- да. а нетоповые на то и нетоповые, сколько бы их мамки и преподы ни надрачивали, они не оч много могут
>>726730 > неверно имелось в виду "без таких мамок, о которых говорил ты", см. выше
>>726797 Ну всё, ты прав, ты прав, осади уже. >сколько бы их мамки и преподы ни надрачивали, они не оч много могут Впрочем, надо ли? Поиграться для души/мозгов и задрачивать до посинения ради прокачки ЧСВ или пристройки своей жопы в говновуз - немного разные вещи.
>>726847 > надо ли увы, в этом случае решают мамки. > задрачивать до посинения ради ради влажных фантазий мамки обычно. по крайней мере, не конченый человек, которому не очень импонирует спортивное программирование(да что угодно подобное) не будет им заниматься сам даже ради каких-то своих целей
>>726900 Меня вот моя мамка-швея заставляла только ходить в церковь. И гулять в день как минимум 2 часа. Приходилось тупо стоять у подъезда, чтобы потом посидеть за компом, а то шнур забирала. А когда она уебывала на работу, со мной оставалась бабка, которая бухала до состояния говнины и валялась обоссанной в туалете. А теперь сравни с родителями Короткевича, программистами, которые обучали его с самого детства.
>>726914 Увы, но в школьном возрасте подрастающий член общества просто не знает ещё, как жить, и как можно жить иначе. У него тупо нет опыта, знаний, кругозора. Всё зависит от окружения. Так что возвращайся в /b/, школьник.
>>726906 > Приходилось тупо стоять у подъезда ты идиот чтоле? по крайней мере гулять много интереснее, чем стоять у подъезда.
результат сравнения очевиден, но давайте сравним просто семью, в которой ребёнку хотя бы не мешают. тогда вероятность получить не корзинку с испорченной психикой и мировоззрением сильно меньше, соответственно действительно одарённый ребёнок в таком случае будет явно более успешен
>>706979 Понимаю, что поздно, только щас заметил тред.
Задача дико тупая, не слушай тех, кто сыпет какими-то заумными словами. У тебя есть граф, вершины это команды, ребро есть если был матч. У тебя у каждой вершины степень ровно 2 по условию. Тогда граф разбивается на циклы (это вроде не очень сложное утверждение например, можно просто начать идти от какой-то вершины по ребрам, по одному ребру пришел, по другому вышел, так как вершин N, рано или поздно ты попадешь в какую-то вершину, где ты уже был. Это может быть только первая вершина с которой ты начал, иначе ты получил вершину степени 3 - ты в нее вошел, вышел, а сейчас еще раз пришел) Очевидно, что из каждого цикла длины k можно взять не более k / 2 команд. При этом, k / 2 можно взять - просто берешь через одну. А циклы это компоненты связности. Разбиваешь dfs-ом граф на компоненты связности, считаешь сумму (размер очередной компоненты / 2), если она хотя бы К - то все заебись
>>729779 Берешь, читаешь какую-нибудь книжку/курсы (проси совета в соответствующем треде), параллельно решай задачи из первого блока отсюда, чтобы освоить основы http://informatics.mccme.ru/
Далеко копать в язык не надо (в смысле про всякие слова уровня ООП и прочее), если надо чисто для олимпиадок На тимусе можешь еще порешать тупенькие задачки.
>>730826 Такой сильной антирекламы я давненько не видел. Если бы не возможность удаленки и миграцию, я бы давно уже дропнул эту хуйню нахуй, но я слишком тупой для сложных вещей и не умею наебывать на даллары.
>>731083 Это ж тупые жиды, они сами не кодють. Вот у них в подвале сидит Ванька-программист который ебашит все проекты в одно рыло по 12 часов в день без выходных за два доширака и упивается своей элитарностью и знанием алгоритмов.
>>731101 Вообще-то Денис очень талантливый, и многие задачки, где куча текста в виде сказки или фэнтези придумал именно он. Бронзовая медаль на ЧМ асм айсиписи
>>732383 Я болею за команду Ural FU : UF larU, но они не пробьются. Думаю, что на первое место выйдут Ural FU: Dandelion (Меркурьев, Сивухин, Данилюк).
>>733337 По книге Стенли Б. Липпмана, Жози Лажойе, Барбары Э. Му "Язык программирования C++. Базовый курс". До этого опытов с программированием почти не имел
>> Для проведения эксперимента надо выбрать из N имеющихся приборов только три. Для этого выполняют следующую операцию - если в группе приборов больше трех, то их нумеруют и выбирают одну из групп: с четными или нечетными номерами. Операцию повторяют до тех пор, пока в группе не останется три или менее приборов. Если их остается ровно три, то они и берутся для эксперимента.Требуется написать программу, которая подсчитает количество способов такого выбора приборов.Как сделать это за 1 секунду при 1 <= N <= 2147483647. Не могу уложиться в эти условия.
>>737611 А как в это дело вкатиться? Обязательно иметь ученую степень в иб? Вот как катываться в олимпиадки без сторонней помощи хотя бы понятно, а тут какая-то закрытая система
>>737619 Блджад, enter случайно отправил. Короче, по моему скромному мнению, даже школьные олимпиадки это отчасти закрытая система. Потому что у ололомпиадников есть свои "клубы", есть тренера, короче мафия задротов, и типа всеобщая олимпиада сводится к эстафете "между своими". Бомбит например с того факта, что в обоссаном ацм победителем уже хуй сколько раз был летмо, хотя по мне говношарага говношарагой. Подебителей надрачивают тренерки, причем только из числа отборных задротов, а все остальные желающие сосут хуй.
>>737623 В итмо на тренировки могут приходить все желающие, всему научат. Я сам, как школьник, тренируюсь у Маврина, просто в начале учебного года кинул анкетку и все
>>739327 Да много годных универов, ИТМО вывозит еще за счет того, что туда больше всего задротов олимпиадников съзжается, причем не только из Рашки. Самарский вуз сильный, УрФУ тоже, ПермГУ тоже золото брали
>>739630 Ну да, только в тот же СПбАУ перевелся на первый курс со второго ИТМОшник, а еще перешел (в прошлом году) вот как раз победитель межнара из СПбГУ. Так что, возможно, это не надолго, хех
>>739631 Лол, в ау вообще не особо приветствуют занятия асмом, потому что отнимает много времени и сил, а программа там и без того сильная. Мимо имею друзей и на кт, и в ау, и в спбгу, и в урфу и в пермгу
>>740641 Он из ЛНУ, чувак в олимпиадках с восьмого класса (сейчас он на шестом курсе). Потом в ЛНУ учился, тренер - Василь Білецький, он тоже брал золото ACM в 2008 году. Так что там не интернетом, а благодаря хорошей тусовке в том числе. Хотя решал он дофига, спорить не буду
>>745228 Ну вот шашматы, например. Там целую игру надо закодить с перебором вариантов. На все это дается 1:40 времени. Может, конечно, вы тут все чемпионы по скоростному набору кода, но мне нужно полдня чтобы такое закодить и отладить. Ты пробовал эту задачу делать? Сколько времени потратил?
Поиск Яндекса отлично работает с блогами, так что во время поиска и последующего чтения блогов может найтись много экзотической информации. Например, описание игры шашматы.
Игра шашматы происходит на стандартной доске 8 × 8: вертикали пронумерованы буквами от a до h, горизонтали — числами от 1 до 8, поле a1 — чёрное, каждое чёрное поле может граничить по стороне только с белыми, и наоборот.
Игроки ходят по очереди. У белых одна фигура — шахматный конь, у чёрных — обычная шашка. Фигуры делают ходы в соответствии с правилами своих игр. А именно, шашка изначально располагается на чёрном поле и может передвигаться только по чёрным полям, уменьшая номер горизонтали на 1, номер же вертикали может как увеличиться на 1, так и уменьшиться; разумеется, выход за края доски запрещён. Конь ходит на одну клетку в некотором выбранном направлении (горизонтальном или вертикальном) и на две в перпендикулярном ему; при этом начальная и конечная клетки хода должны находиться на доске.
Правила, по которым определяется победитель, таковы:
Если на ходу белых конь может пойти на поле, занятое шашкой, конь берёт шашку, и белые выигрывают.
Если на ходу чёрных шашка может пойти на поле, занятое конём, при этом следующее в том же диагональном направлении поле существует (то есть конь стоит не на краю доски), шашка берёт коня, и чёрные выигрывают.
Если на ходу чёрных шашка может пойти на поле, занятое конём, но при этом конь стоит на краю доски, шашка не может сделать соответствующего хода. Если это был единственный возможный ход шашки, белые выигрывают.
Если чёрные своим ходом приводят шашку на первую горизонталь, чёрные выигрывают.
По заданной начальной позиции и цвету игрока, делающего ход первым, выясните, кто выиграет при правильной игре.
>>745154 >Так что там не интернетом, а благодаря хорошей тусовке в том числе Двачую. Если не связи со всякими ололо-тренерами и прочей петушнёй, то хотя бы иметь товарища, который подскажет, что и как учить, какую литературу читать. Я в 8 классе в одиночку пытался решать задачи и обломался на них по полной, без соответствующих знаний было СЛОЖНА и страшно.
>>745271 Я сделал первые две за 8 минут, и лёг спать, так как там только одну достаточно, чтобы пройти. для тренировок есть кодфорсес. Шашматы -- просто написать перебор. Не так долго и писать, ведь всего две фигуры. Наложить ограничения. Делать проверку на победу. запихать это всё в рекурсию. Посмотреть на дерево. Вывести ответ.
>>745766 Ну вообще у меня на диске пылится готовое решение для https://www.e-olymp.com/ru/problems/32 Так что в контесте я бы взял его за основу и поменял только минимум - разницу между пешкой и шашкой. Получилось бы быстрее. И насчёт часа на отладку ты загнул. Так редко бывает с олимпиадными задачками при грамотном подходе к дебагу.
>>749520 Сначала на листочек выписывается строка. Игроки ходят по очереди и на каждом ходе можно стереть один символ из начала или конца строки. Побеждает игрок, перед ходом которого строка была палиндромом. Палиндромом называется строка, которая читается одинаково слева направо и справа налево. Определите, какой игрок победит при оптимальной стратегии обоих игроков.
Ребяты. У меня есть 30 задач на тимусе, и целое лето впереди. Но я сам безвольное хуйло. Никто не хочет со мной в соревновательной, менторской или иной форме порешать это дело?
>>750634 > соревновательной чуваки с codeforces или topcoder очень хотят. если дрочишь на рейтинг, то добро пожаловать туда. мне более-менее помогало(это единственное место кроме олимпиадок, где я решал задачи). правда призером всероса так и не стал
>>751628 > Чем сейчас занимаешься? страдаю хуйнёй, cf пишу, ну и соревнования типа codejam, rcc
> Куда поступил/будешь поступать? видимо, в итмо(олимпиадки 1 уровня есть). хотелось бы в мгу ибо корочка пижже, но егэ сдать хорошо если на подтвержение в итмо смогу
>>751884 Самый жесткий буст получил в школе. Нам преподавала сестра одного из чемпионов ACM в прошлом, менее успешная. Это было в 8 классе. Потом на кружке при ИТМО пересел на кресты, с тех пор только стал более уверенным
>>751924 не было такого. ваще есть 3 случая: 1) эта фигня для самолюбования а ты показываешь что ты слабый -> провал 2) эта фигня просто чтобы порешать интересные таски -> нафиг читерить если цель -- решить? 3) остальное -> нафиг ваще решать?
>>751997 т.е. для тебя AC полученный путем прочтения чужого решения -- заебись? если так, то, видимо, не место. едиственная ситуация, когда это нормально -- это если ты хочешь научиться хорошо реализовывать(тогда разбор надо читать без деталей, естесна)
Есть два прямоугольника, один размера a x b, другой размера c x d, напишите функцию, которая будет возвращать true если второй прямоугольник можно поместить внутри первого, иначе false.
Есть массив уникальных дат месяца, отсортированный по возрастанию, на которые вам требуется купить билет t[0..30], где t = [1..30]. И есть следующие типы билетов: 1) Билет на 1 день за 2 рубля; 2) Билет на 7 дней за 7 рублей; 3) Билет на 30 дней за 25 рублёй.
Напишите программу, которая поможет пидорахе сэкономить на проезд в текущем стабильном положении в стране.
Программа должна возвращать минимальную сумму в рублях, которая покрывает все поездки.
>>760540 Дэбил, зачем пытаешься жадник придумать. Много таких по весне оттаяло, в этой задаче думать вообще не надо, пишешь динамику и всё. Уметь отличать задачи на жадник от задач на динамику – крайне важный скилл.
>>760615 Нет никакого чтива, по крайней мере, я так и не нашёл. В Кормене есть про динамику, сам пытался в своё время понять по нему, но не вышло. Есть только стандартный принцип: если тебе кажется, что задача на жадник, но что-то не выходит, или слишком тяжело, то попробуй динамику. В случае этой задачи вообще беспроигрышный вариант, что жадник что динамика одну сложность имеют.
>>760618 Нечего показывать, мне решение и так очевидно. Могу на пальцах: мы по каждому дню от него вперёд проставляем оптимальные варианты. Пусть сегодня 0 день, тогда мы смотрим, есть ли поездки в день 1. Если есть, то ставим на 1 день 2 рубля, иначе 0. Смотрим на поездки с 1 по 7, если есть, то ставим в 7 7 рублей, иначе 0. Дальше принцип понятен, думаю, когда я говорю "ставим", то имею в виду взятие минимума из нашего промежуточного варианта и того, который уже для этого дня есть. Изначально 0 дню ставим 0, остальным INF. По тесту из условия, на 0 дне в 7 ячейку проставится 7, дальше эта семёрка будет ползти до 28 дня, откуда два раза прибавится 2.
>>771373 Ок, просто мне больше нравится решать задачи более общими методами. Вот тут ты напрямую пользуешься тем, что один из билетов всего на 1 день, а другой сразу на 30, то есть на весь промежуток. Давай тогда дадим тебе промежуток в 100000 дней и 10 каких-нибудь случайных чисел как длительности билетов. Тогда ты придёшь ровно к тому же, что я и написал, иначе пальцы отвалятся случаи разбирать.
Найди первый элемент в отсортированном массиве, он на позиции k (нумерация с 0). Разберём два случая: 1. k%2 == 0 -> проводим операцию на подотрезке от 1 до k -> k элемент стал k-1. 2. k%2 == 1 -> проводим операцию на подотрезке от 0 до k -> k элемент стал k-1.
Таким образом доводим первый элемент на его место (нулевое), дальше точно таким же образом обрабатываем суффиксы массива длиной n-1, n-2, ... , 2. Так как элементов всего 100, то задача решается втупую за куб.
Если ограничения были бы чуть побольше, то элементы попарно в массиве можно свапать за логарифм двумя неявными декартовыми деревьями, с ними получится решение за N^2 * logN.
>>778520 Пиздец перемудрил, это же тупо на сортировку пузырьком, типа такой хитровыебанной операцией просто завуалировали, что ты можешь свапать два соседних элемента. Пишешь обычный пузырёк, хотя за квадрат, хоть за куб, и всё.
Я конечно не знаю но олимпиадные задачки настолько запутанные, что мне их лень расшифровывать чтобы узнать что от меня хотят. В фрилансе очень четко известно что нужно писать. Нахуй эти олимпиадные задачи, лучше решать реальные.
>>779632 Как это, обычно как раз наоборот, в задачке абсолютно чётко сказано, что от тебя хотят, с ограничениями и примерами. А вот что бывает в типичных ТЗ...
>>783371 Есть очень мало контестов, типа Distributed Google Code Jam, где он может пригодиться. В остальных случаях процессорное время считается, очевидно, как сумма всех тредов, так что оверхед на управление тредами только навредит.
Вот есть следующая задача. Дана плоскость, есть несколько точек на ней (до 500), с не очень большими координатами (от 0 до 50, вещественные). Надо найти для каждой пары точек кратчайший путь между ними. Плоскость (можно рассматривать только квадрат 50х50) поделена на единичные квадраты, каждому квадрату сопоставлен какой-то вес. Соответственно, длины всех отрезков внутри квадрата домножаются на его вес. Не обязательно точное решение (я не уверен, что оно есть), но очень хорошее приближение желательно, да и чтобы работало быстро.
Я пробовал сделать следующее: покрыть большой квадрат сеткой, построить граф на этом, соединить исходные точки с ближайшими вершинами сетки и запустить 500 раз (количество точек) Дейкстру (которая с кучей) Но это работает медленно при сколько-нибудь большом размере сетки, да и хочется таки сделать более хорошее приближение. Всякие A-star для увеличения скорости тут разумеется не подходят - мне надо от точки искать расстояние до всех, а не до одной, то есть все равно почти весь граф придется обойти
>>786159 Какой ты ещё граф делал? Судя по твоему условию, тут всё намного хитрее. То есть минимальное расстояние не факт, что прямая, так как разные веса у секторов. Я всё правильно понял? Тогда физическая аналогия -- свет в материале с разной проницаемостью. То есть минимальное расстояние до заданной точки выражается через тригонометрию. И перебором по всем точкам O(n^2). Можно ли быстрее? Надо думать. Ещё такой вопрос -- какой вес на грани квадрата? То есть из одного сектора перпендикулярно дохожу до другого, а дальше двигаюсь вдоль грани: какой в итоге вес?
>>786249 Да, конечно не прямая, иначе в чем задача, лол. Но, тем не менее, это какая-то ломаная с не очень большим числом отрезков Считаем, что по грани совсем вдоль нельзя идти - либо ты с одной стороны (на eps), либо с другой.
А как выражается через тригонометрию, я не понимаю вот чего-то. Ну то есть явное аналитическое уравнение у меня не получилось написать. Для случая если надо перебраться в какую-то точку в соседнем квадрате понятно как считать еще (да и то, если оптимальныей путь не идет как-то в обход), а в общем случае хуй поймет.
>>786249 >>786257 >какой граф Эм, ну в смысле? Я ж сказал: покрываю все мелкой сеткой с небольшим шагом (например, 1/3, если меньше, то дольше работает), вершины - узлы сетки и исходные точки, ребра - отрезки между соседними точками сетки (по всем 8 направлениям), веса считаются легко
>>786341 Расскажи подробнее про требуемую точность и производительность. Сколько есть времени на анализ плоскости, и сколько раз после этого надо определять расстояния между точками на ней?
Я бы увеличил количество точек, но оставил только точки в фиксированных позициях на границах квадратов. Предрассчитываем таблицу расстояний между точками с фиксированными позициями на сторонах квадрата, чтобы потом забыть про тригонометрию. Цена ребра равна соотв. расстоянию на коэффициент квадрата. Дальше группируешь квадраты в блоки 4x4, строишь для каждого блока матрицу расстояний между всеми его внешними точками (можешь начать с расстояний между внутренними точками квадратов 2x2, потом между их внешними точками, а потом объединить четыре 2x2 в один 4x4 и повторить процесс). Можно придумать оптимизации исходя из геометрического смысла. Например путь из (0.1, 0.1) в (2.1, 0.1) точно не проходит через (1.1, 0.9). Как пользоваться этим я думаю понятно. Но не забывай, что кратчайший путь между точками внутри блока может выходить за пределы блока.
АХТУНГ ВСЕМ ЗАДРОТАМ У ВАС УНИКАЛЬНЫЙ ШАНС ПРИМЕНИТЬ СВОИ ЗНАНИЯ НА ПРАКТИКЕ Есть 1 взвешенный, неориентированный граф. Он разделён на 2 подграфа так что все его вершины входят в один из двух подграфов. При этом оба эти подграфа состоят только из одной компоненты связанности. У этого графа веса имеют не вершины, а рёбра. Ценой графа называется сумма весов всех ребер которые соединяют 2 подграфа. Разрешается переносить любую вершину подграфа в другой подграф кроме некоторых закреплёных. Закреплёные вершины всегда соединенны рёбами только с вершинами своего подграфа и названы заранее. Задача минимизировать цену графа так чтобы количество вершин принадлежащих каждому подграфу осталось неизменным и подграфы остались состоять из одной компоненты связанности.
>>787900 Вот это воды налил, вместо того чтобы просто описать ограничения на минимальный разрез. По теме, решения с ходу не знаю, есть подозрение, что за полином не решается, ну или очень трудно. В любом случае, глянь в сторону как раз минимального разреза.
>>787900 Щас подумал про закреплёные вершины. Они не нужны исли в клнце просто одну проверкц добавить. Может так задача проще станет? Почитал про разрез. Мне его минимального веса надо и размеры подграфов не должны поменяться. Тогда нужно найти минимальный разрез такой алгоритм ведь есть? пока он не будет делить граф правильно искать следующий за ним по размеру разрез. Такое возможно?
>>788264 Ну ты сам подумай, что сказал. Фактически ты перебираешь разрезы, а их экспонента (все возможные разбиения на два множества, 2^V) >>788176 Ну от твоего частного случая до общего уже очень близко. Если подставим кратные рёбра, то получим дискретный случай.
Ахтунг, ты слишком неопределённо поставил задачу. В общем случае она NP-сложная. Если соединить фиксированные вершины каждого подграфа рёбрами бесконечного веса со своей вершиной (чтобы гарантировать, что фиксированные вершины окажутся в разных подграфах), а также добавить две вершины, соединённые со всеми остальными рёбрами нулевого веса (это возможный частный случай входных данных, при котором связность подграфов гарантирована), то получаем задачу о fixed balance edge cut, которая известна NP-сложностью. Но если знать, например, что вершин не больше сотни, или что максимальная степень графа невысокая, или что он разреженный, или что он планарный, или что требуется приближённое решение, то можно подумать об оптимизациях. Есть ли у задачи физический смысл, типа раскидывания компонентов по сторонам платы, или серверов по датацентрам?
>>788449 >что вершин не больше сотни 2к максимум. У каждой вершины от 2 до 6 рёбер. >требуется приближённое решение Ну в крайнем случае можно и приближённое. Или сделать вес всех рёбер 1. >Есть ли у задачи физический смысл Его в некоторых случаях нужно будет в игре применять. Один из них минимизация длины линии фронта или раздел границы после войны. Какой алгоритм там теперь я не знаю, но он либо оставляет какие-то полуострова врезающееся в чужую территорию там где были прорывы, либо анклавы там где были котлы.
>>788906 Хм, это контест с Петрозаводских сборов. Либо он в числе его авторов, либо он был участником на сборах, а потом досдал задачи, в чем проблема?
>>788646 Дуги и вершины нарисованы в фиксированных позициях на плоскости, и должны остаться на тех же местах после проведения разреза? Если да, то это важное ограничение. Оптимальным разбиением пикрелейтеда может быть {A, B, C} и {D, E}, но ты не сможешь провести так границу не пересекая лишних дуг.
>>789363 Лол, как ты до такого варианта вообще дошёл? У нас тут на граф задача, а не на геометрию. Твоя геометрия решается за что-то около (V^2)*E то есть не больше чем V^4 в общем случае тупым перебором с сортировкой по полярному углу.
>>791283 >Его в некоторых случаях нужно будет в игре применять. Один из них минимизация длины линии фронта или раздел границы после войны. >У нас тут на граф задача, а не на геометрию. Не факт. Возможно >>788449 просто неправильно понял какую задачу ему надо решить.
>>791372 >>791373 Да, если это игра, то звучит разумно. Просто надо уточнять такие детали, на плоскости задача, можно сказать, давно известна и решается просто. В общем случае это объект научного исследования.
Основные ресурсы с задачками:
codeforces.com - Клевый проект, чуть ли не еженедельные контесты. Система писькомерства рейтинга уровня ELO с Короткевичем 4к+. Задачки своеобразные, пилятся комьюнити, мало общего с задачками стандартного ACM, что продиктовано форматом соревнований. Так же codeforces выбирают площадкой для множества престижных соревнований уровня VK Cup, в тренировки заливаются все крупные контесты оффлайн.
acm.timus.ru - великолепный архив. Решишь 500 задач на тимусе - будешь гарантированно красным на кфе
informatics.mccme.ru - хорош для новичков
Дальше идут ресурсы, которые оп не юзал особенно по своему скудоумию:
acmp.ru - ничего сказать пока не могу
TopCoder.com - пендосский codeforces, регулярные контесты, открытые турниры и тому подобное
e-olymp.com - не знаю
F. A. Q.
Что почитать?
Грэхэм, Кнут, Паташник "Конкретная математика"
Кормен "Алгоритмы. Построение и анализ"
...
Как вкатиться?
Читай книжки сверху, и решай как можно больше
Шапка за пять минут, надеюсь треду жить, принимаются предложения по оформлению