Аноны, я знаю, что тут есть много успешных программистов-олимпиадников. Я тоже программист-олимпиадник, только нихуя не успешный. Начал около 9 месяцев назад, на тот момент я даже не знал, как объявить массив в Паскале. Сейчас программирую на C++, нравится намного больше Паскаля, но суть не в этом. У меня не получается размышлять. Чтобы было понятнее, приведу пример, на задаче.
На ввод подаётся натуральное число N(до 10 000) и далее не более N натуральных чисел(каждое число до 1е9). Нужно найти первое натуральное число, которое нельзя представить суммой этих чисел, причём каждое из данных чисел может входить только 1 раз в сумму.
Пример: Ввод: 4 1 1 1 5; Вывод: 4:
Так вот, решение этой задачи основывается на том, что если у нас имеется некоторый набор чисел (A1, A2, ..., Ak), такие, что можно представить любое число от 1 до их суммы S суммой некоторых этих чисел, то если мы добавим любое число Ak+1 <= S, то предыдущее свойство сохранится, т.е. можно представить любое число от 1 до их суммы, только уже S + Ak+1, суммой некоторых этих чисел.
И как я должен был САМ до этого дойти? Как я должен был связать сумму набора чисел и то, что если добавить число <= этой суммы, то сохранится это свойство? Я просто не могу, у меня уже сил нету, я не помню, когда я решал реально сложную задачу САМ, у меня мотивация после такого тупо на ноль исходит. Вот я вижу, что некоторые пишут: "Я думал над задачей два дня и всё таки решил, ух, сложная задача". Но я не понимаю, как так можно сидеть и думать? Просто перебирать возможные пути решения? Ну, я перебирал. Первая мысль была просто рекурсию, зафигачить, но увидел, что ограничения не позволяют. Динамику тут тоже не впереть. Были ещё несколько бредовых идей, но они не прошли. И вот что мне делать, если все адекватные, на мой взгляд, варианты закончились? Тупо тыкать пальцем в небо и искать такие закономерности, которые даже после чтения разбора у меня в голове не могут уложиться? Может дело в питании, и мой мозг не получает витаминов, или то, что я каждый день 5+ часов ебусь с этими задачами? Сегодня вот проснулся, сел, прочитал эту задачу, ну а дальше вы знаете. И просто настолько апатичное настроение, весь день тупо проспал. И у меня уже появилось подсознательное отвращение к задачам, я боюсь их решать, потому что думаю, что опять нихера не решу, потрачу полтора часа пытаясь выдумать решение, которое не сработает, потом ещё полтора часа буду разбираться в разборе, а потом я уже как выжатый лимон. А мне ведь область брать надо. И вроде бы нет недостатка в практике, скорее даже переизбыток. С мая начал активно участвовать во всех раундах на Codeforces, в 90% случаев решаю одну задачу, дальше тупо ничего придумать не могу. После контеста, всегда с помощью разбора решаю вторую и третью задачу, причём стараюсь по максимуму разобраться, чтобы все моменты для меня были понятны. Анон, помоги советом или просто поддержи, мне будет очень приятно.
>>1013780 Я эти олимпиады и дрочу, чтобы в ВУЗ поступить, если я возьму 1 место на области, мне 100 баллов по одному из ЦТшных предметов дадут, да и мне гораздо приятнее Писать код, чем делать физику. >>1013766 >Прочитай CLRS Спасибо за совет, часто вижу эту книгу, по ходу действительно годная. >дропни все эти олимпиады Читай выше.
>>1013753 (OP) Нахуя тебе это надо? Реальные проблемы на олимпиадную хуйню не разу не похожи. У реальных проблем нет красивого однозначного решения. В реальных проблемах у тебя всегда есть дохуя времени подумать, не надо задротить, ботать ебанутые алгоритмы наперед. Ты можешь несколько дней гуглить, изучать проблему, сравнивать реализации. Можешь написать куски тупо брутфорсом, не заебываясь, а потом переписать. Самое главное, что олимпиадные задачи тренируют тебя только в решении олимпиадных задач. Чтобы уметь писать компилятор, например, надо писать компиляторы по возрастающей сложности начиная с простых. Чтобы кодить графоний надо начинать с текстурированного кубика, и т.д. Ботая задачи ты развиваешь только нахуй ненужный ИРЛ скилл решения олимпиадных задач, и тем самым тратишь время впустую.
>>1013828 Я прекрасно понимаю все то, что ты написал, мне не раз повторяли, что при трудоустройстве всем будет похуй, где ты там что занял, но, как я писал выше, олимпиадное программирование даёт мне сто баллов по ЦТ по какому-то предмету, а это облегчает мое поступление в сотни раз(потому что не нужно будет сдавать физику). Естественно, после главной олимпиады я забью болт на эти задачи и буду заниматься действительно полезными вещами.
>>1013791 > если я возьму 1 место на области, мне 100 баллов по одному из ЦТшных предметов дадут Давно такие правила? Это же тысячи ебаных стобальников. Поступал в МГУ в 2008, был первым на области и призером зональной олимпиадки зона Сибирь, шутники, а не то что вы подумали, нихуя мне 100 не поставили.
>>1013753 (OP) Чот мне думается, что проще будет выучить школьную физику. Та же всего три раздела: эм а равно эф пэ вэ рано ню эр тэ и равно у делить на эр
Если ты на способен осознать эту хрень, то и погромист из тебя выйдет так себе.
>>1033699 Бля, макба съела звездочки, а я въебал сравнение даблов в сях, но общая идея, надеюсь, ясна: ты >>1015483 идешь на википедию, смотришь все свойства преобразования Фурьи и их и проверяешь.
>>1013988 Таки нет. Где как. И на факультетах в одном институте тоже различается. Например, в МЭИ на прогерские специальности одного факультета берут только с физикой. А на прогерские специальности другого берут с информатикой. Причем названия у специальностей одинаковые, но там, кажется, учебная программа различается. >>1014376 > Что учат на информатике в вузах? >>1014563 > матан Вот как раз-таки для ОПа нужно прояснить один очень-очень важный момент.
ОП, читай внимательно: в институте, ЛЮБОМ, даже западном, тебя не будут учить писать софт. Никогда. Там из тебя попытаются сделать специалиста-математика-невротъебаться-архитектора, который составляет алгоритмы там, блядь, рисует блок-схе-е-е-емы, блядь... То есть из тебя на вышке будут пытаться сделать специалиста высокого класса, который... ну... архитектор, да. Там будет очень много матана. Я не учился по прогерской специальности. Но вот у меня сестра поступила в институт на факультет прикладной математики. Им дали задачи по программированию. Ну, я прошу учил, и подумал, что сейчас я там ей все сделаю. Да, блядь. Я охуел. Вот что-то типа твоих этих олимпиадных задач, только посложнее. Хотя мне даже разницу определить трудно.
И вот со всеми этими задачами программист на своей работе не сталкивается вообще. Так что у тебя два стула: идти на другой факультет(ибо ты отобъешь у себя желание прогать и развиваться вообще, у моего друга так же было, говорит, что институт отбил у него вообще все желание и он прогать нормально не может, но программистом работает) и учить прошу параллельно, а потом фрилансить/вкатываться на работку(в прогеры, наслышан, и без дипломов берут, только знания показать нужно), либо второй стул: сдать все это/задрочить физику поступить, в общем, на специальность прогера и мучиться с этим ебучим матаном. Станешь ты прогером или нет, как показывала практика на других, зависит только от тебя.
>>1034018 Щас бы выбирать, где на прогера учиться. >>1034326 Ну, а что, думаешь, легко будет учить прошу, работая с 9 утра до 9 вечера в каком-нибудь маке? Лучше прикинься типа лингвистом хочешь стать, чтоб предки деньги давали. По-другому только если ты в свои 18 уже можешь быть джуном или имеешь навыки, чтоб фрилансить.
>>1013828 не согласен. прелесть олимпиадных задач как раз в след. 2 пунктах (сугубо имхо, конечно): 1) научить анализировать задачу и последовательно идти к решению. легко решать простые алг. задачи, для которых нужно лишь применить существующий алг. гораздо сложнее проанализировать задачу, которая решается не совсем очевидным способом 2) привыкаешь работать под давлением, тк есть временные рамки
>>1035416 причем тут море. я не говорю, что спортивное программирование единственный ценный опыт. я всего лишь утверждаю, что он помогает развивать вполе полезные скиллы.
>>1035796 Сука, полезные скилы блядь, мой одногруппник бывший, когда одимпиадки писал, вместо того, что бы сидеть и делать нормальный продуманный алгоритм хуярил чудовищные костыли и выигрывал их. В одной задаче было нужно было указать номер строки (причем смещения этой строки тоже считались) в которую входит заданная строка и он сделал свич/кейс на 40 позиций и руками записывал все варианты смещения строки, это был полный пиздец. Я к олимпиадкам после этого с крайним сомнением отношусь, потому что ты либо ты держишь алгоритм в памяти (хотя полезнее знать, в каких случаях его лучше, а там и нагуглить и встроить запросто) либо высираешь стены говнокода
>>1035816 Профиты где? Построение архитектуры? Нет времени. Выбор оптимального решения? Нет времени. Ты либо делаешь костыль "лишь бы работало" либо проигрываешь. Тебе уже выше объяснили, что навыки олимпиадника пригодятся тебе только когда попросят сортировку пузырьком на листочке нарисовать
>>1013841 >я хочу задротить и заниматься хуйней, тратить время впустую, чтобы пройти тест, который каждый раз становится все легче. А потом через 4 годика пойти работать на завод. >Но даже мой организм отказывается от этого. Что мне делать? Если нравится программировать, то занимайся именно этим а не хуетой, а если нет, то и дальше время впустую трать
Двачую ОПа, некоторые задания мало того, что требует неочевидной или крайне изысканной реализации, такещё и имеют какое-то припёзднуто-ебанутное описание, которое умственный инвалид делал, лол
>>1013753 (OP) >С мая начал активно участвовать во всех раундах на Codeforces, в 90% случаев решаю одну задачу, дальше тупо ничего придумать не могу. кекнул с тебя. Div1 бог итт
>>1013791 А причем тут олемпиады по программированию? Тогда тебе надо к олемпиаде по физике готовиться, раз 100 балов по ней хочешь. А даж если не получиться то уже будет легче написать физику.
>>1052310 Я часто даже ни одной не могу решить, хотя вкатываюсь в программирование с 2010 года. >>1052403 >В Гугле, Фейсбуке и Амазоне топовые зарплаты И чо? Можно макачить сайты на пеашпи и получать огромные для обычного мужика деньги
>>1052527 Чо нельзя? За 30-40к можно пеашпи макакой пойти. Чем тебе не деньги? Мужики на заводах хуярят годами за 15к, а тут в два раза больше предлагают, а ему все мало.
>>1052514 >Я часто даже ни одной не могу решить, хотя вкатываюсь в программирование с 2010 года. Ничего удивительно. А ты думал выучишь синтаксис С++ и станешь победителем всех олимпиад? Такое только в аниме бывает.
Вообще не ябу что это за олимпиады по "программированию", но судя по ОП-посту это просто определенные математические задачи, которые нужно уметь распознать. Не зная математику, ты не сможешь решить такую задачу.
>>1052558 >Не зная математику, ты не сможешь решить такую задачу Там надо знать задротские алгоритмы и уметь их реализовывать. По этой хуйне даже книги пишут, там кормен или кнут. А вообще только долбоебы и задроты изучают всю эту ебанину: какой нормальный человек будет дрочить все эти графы деревья сортировки? Один хуй, почти никому это еще не пригодилось
>>1013753 (OP) >И как я должен был САМ до этого дойти? ну это обычное дело. дается задача, там хуева туча связей, графики и рисунки, нихуя не ясно, а решение основывается на том, что имеется теорема Сосницкого о произведении радиусов вписанных окружностей. это обычная хуйня для олимпиадок, там нужна большая теор.подготовка, книжек надо больше читать. найти решение задачи в этой ситуации думанием - это все равно что сделать открытие в этой области за полчаса. просто нереально.
>>1052566 >графы деревья сортировки это не задротство, а обычный курс информатики >надо знать задротские алгоритмы для решения олимпиадных задач вполне хватит 2-3 книги, и базовых алгоритмов будет более чем достаточно. гораздо сложнее проанализировать задачу и понять, какие алгоритмы надо применять
>>1053060 >это не задротство, а обычный курс информатики То-то я вижу, какие понятные книги написаны по алгоритмам, обычный курс информатики, похуй, что требуется знание математики за 3 курс. >хватит 2-3 книги Ну найди мне такие книги, чтобы я понял там хотя бы 60%, притом что я могу только в школьную математику
>>1053210 зачем тебе? бери задачки средней сложности (например TopCoder div 1 250 - div 1 500) решай их, если не сможешь решить за день например, читай едиториал. Очень редко что там какой-то хитровыебнутый алгоритм. Самое сложное что мне попадалось это бипартит матчинг в див1 500, в основном как тебе выше написали - задачи на умение анализировать а не на знание алгоритмов
>>1013753 (OP) >И как я должен был САМ до этого дойти? Никак, надо просто было начать заниматься олимпиадами по математике и программированию с 5-6 класса. Сейчас уже поздно, забудь об олимпиадах
>>1053365 ну тогда бери див2 250-500 главное чтобы тебе было СЛОЖНО, нет смысла решать тысячи простых задач.
берешь задачку - думаешь бля пиздец хуй решу, думаешь часа 3 например или день, потом открываешь эдиториал, становится все очевидно. Пишешь код (ОБЯЗАТЕЛЬНО) по эдиториалу. Если там какой-то новый для тебя алгоритм - ок идешь читаешь, разбираешься. Потом читаешь чужие решения (там могут быть крутые техники, полезно посмотреть).
>>1053513 Сука, мне даже самые простые задачи на codeforces даются очень тяжело, даже задачи уровня A почти не решаются. И что такое эдиториал? Где он?
>>1053535 Вот именно они тяжело даются. Особенно задачи на динамику и жадные алгоритмы. Я пытался понять, что это, но везде натыкался на тонны математики и непонятные объяснения.
>>1053679 Ну вот я дошел до этой задачи. http://codeforces.com/problemset/problem/158/B Я так понял, ее надо решать перебором сочетаний, типо сочетать 3 и 1, 2 и 2, и.т.д, я пытался что-то написать, но ничего не вышло, я потерял суть решения и обосрался. Решил посмотреть решения на третьем питоне и вот увидел такое:
>>1054375 Я спрашивал у друга, который пишет так же, говорит, что так быстрее пишется. Ну а вообще похоже на какой-то пиздец, как до такого можно дойти?
Индукцию, естественно, нужно знать, это же азы. Я рекомендую тебе порешать https://projecteuler.net/ . Там начинается все с совсем простых задачек, тебе будет по силам, и сложность постепенно нарастает, достигая максимума примерно на 200-й задаче. Так ты постепенно натренируешься решать более сложные задачи. Тут опыт нужен, и терпение чтобы его набраться.
>>1054441 возле задачи есть подсказка - жадный алгоритм. подсчитай кол-во групп в зависимости от кол-ва участников в ней. после этого наиболее жадным образом укомплектуй такси: сначала кол-во групп с 4 челами, потом с 3 и 1 - тк сумма 4, то поместятся в одно такси. потом укомплектую двочки и тд
важно не забывать про крание случаи - наприер, 4 4 3 2 2 2 1 1
>>1054583 >после этого наиболее жадным образом укомплектуй такси: сначала кол-во групп с 4 челами, потом с 3 и 1 - тк сумма 4, то поместятся в одно такси. потом укомплектую двочки и тд Мне вот это тяжело дается, я не могу осилить такой большой объем
Вот начал решать эту задачу: http://codeforces.com/contest/849/problem/A И ничего не могу придумать. Вот совсем. Казалось бы, наверное, легкая задача, а я читаю условие и чувствую себя конченным овощем, который ни на что не годен. Как научиться решать такие задачи, даже самые легкие?
>>1055606 Там указан тэг greedy. Значит нужно гуглить что такое жадные алгоритмы, читать задачи по этой теме, разборы. Потом возвращаться к этой задаче и, если она стала понятна, решать и чувствовать удовлетворение, либо же снова гуглить, читать разборы аналогичных задач до просветления. Может я неправ, но обычно так поступаю.
>>1055606 на самом деле нужно только внимательно прочитать условие и вспомнить четность нечетность. 1) если нужно нечетное кол-во подотрезков с нечетное длинной, то изначальная пос-ть должна иметь нечетную длинну 2) если каждый подотрезок должен начинается и оканчивается с нечетного числа, то и изнач. пос-дь должна первым и посл. числм содержать нечетные числа
но если выполн. 1 и 2 - то сама изнач. пос-ть подходит под решение
собственно нужно проверить на четность длину, первый и последний элементы
>>1035819 "Профиты где? Построение архитектуры? Нет времени. Выбор оптимального решения? Нет времени."
Лол, что ты несешь ? Какое время, какая архитектура, какой выбор ? Чаще всего (а особенно у тормоза вроде тебя) будет ситуация, когда ты просто НЕ ЗНАЕШЬ решения, не знаешь, что надо писать и какой должен быть алгоритм. Хотя насчет применения на работе - тут ты близок к истине.
>>1056144 >Чаще всего (а особенно у тормоза вроде тебя) будет ситуация, когда ты просто НЕ ЗНАЕШЬ решения, не знаешь, что надо писать и какой должен быть алгоритм. Ну конечно, я же не решаю манязадачи с ебанутыми решениями и велосипедным кодом с читаемостью из ранних нулевых
>>1056209 Читаемость у них адекватная и однозначная, если у тебя с этим проблемы - значит недостаточно умен. А вообще, хуль ты приперся в олимпиадный тред? Иди решай свои серьезные рабочие проблемы. Тут нет понятия велосипедного кода, он должен лишь решать задачу, а не удовлетворять каким-то твоим требованиям. Переменные называют в одну букву просто для удобства (тк человек прекрасно понимает, какая что обозначает), для меня например при перекате в корпоративную разработку было шоком, что их называют СЛОВАМИ. (но вообще для читаемости это конечно правильно). Ты абсолютно не понимаешь, о чем идет речь. Выбор решения ? Выбор, прости, из чего? Если ты нашел хоть одно, это уже ОЧЕНЬ хорошо, и суть решения не может быть костылем, тк ограничения по памяти и по времени накладываются. Это учит думать своей головой, выдумывать что-то свое. Может помочь в будущем, на каком-нибудь серьезном проекте с хайлоадом.
>>1056355 >Это учит думать своей головой, выдумывать что-то свое Дальше не читал. Непродуктивная деятельность ничему не учит, потому что ее опыт не может быть применен для решения каких-то продуктивных задач. То есть, грубо говоря, играя в свои олимпиадные игры ты не станешь опытным программистом, ты станешь всего лишь опытным решателем олимпиадных игр
>>1056361 С учетом того, что на собеседованиях во всякие гуглы нужно решать всякие задачки олимпиадного типа, участие в олимпиадах может принести много профита.
>>1056355 Ты находишь первое папавшееся решение и уже считаешь его правильным? Ты не продумываешь другие варианты, ведь у тебя нет времени на них, это очень плохая практика Ну и >Нормальная читаемость >Переменные в одну букву
>>1056400 Я не знаю, я сам на задачках с leetcode тренировался. Если не мог решить, разбирал чужое решение. Специально не изучал. В олимпиадах я тоже не участвовал, поэтому мне такие задачи даются тяжело, приходится много практиковаться.
>>1056361 После универа были некоторые проблемы со вкатыванием именно туда, куда я хотел. В итоге плюнул и пошел в веб. Взяли на работу почти сразу, язык на котором теперь пишу (сейчас уже главный на проекте, вся хуйня) я учил перед собеседованием часов 5-6 (с нуля). Олимпиадное прошлое помогло и на собеседовании, и при изучении языка. Угораю с историей вкатывальщиков в веб, которые там годами ищут работу и прилагают титанические усилия. С другой стороны, понимаю, что их природа не шибко одарила, поэтому угорать неправильно. Это так, пример того, как мне помогли олимпиадки.
>>1013753 (OP) Я мимо интересующийся, а есть ли программирование без вот этого всего пространственного мышления, чтобы как задрот делать одно и тоже и получать бабосы?
>>1056507 Ну типа там задачи на переливание сосудов, в какой бочке яд и прочая шиза, чтобы не сталкиваться с этим говном и просто вставлять чужой код в консольку или по книжке делать похожее.
>>1056511 Front end developers use HTML, CSS, and JavaScript to code the website and web app designs created by web designers. The code they write runs inside the user’s browser (as opposed to a back end developer, whose code runs on the web server). Think of it a little like this: the back end developer is like the engineer who designs and creates the systems that make a city work (electricity, water and sewer, zoning, etc.), while the front end developer is the one who lays out the streets and makes sure everything is connected properly so people can live their lives (a simplified analogy, but you get the rough idea). They’re also in charge of making sure that there are no errors or bugs on the front end, as well as making sure that the design appears as it’s supposed to across various platforms and browsers.
>>1056513 О то что надо, даже гугл перевел while the front end developer is the one who lays out the streets как "В то время как разработчик интерфейса - это тот, кто лежит на улицах"
>>1056479 Конкретнее Как это помогло при изучении языка и как это помогло на собесе, только если сказать "я олимпиадник" и решить задачу с яйцами и 100-этажным зданием Я тоже работу сразу нашел, но никаких олимпиадок не было
На ввод подаётся натуральное число N(до 10 000) и далее не более N натуральных чисел(каждое число до 1е9). Нужно найти первое натуральное число, которое нельзя представить суммой этих чисел, причём каждое из данных чисел может входить только 1 раз в сумму.
Пример:
Ввод: 4 1 1 1 5; Вывод: 4:
Так вот, решение этой задачи основывается на том, что если у нас имеется некоторый набор чисел (A1, A2, ..., Ak), такие, что можно представить любое число от 1 до их суммы S суммой некоторых этих чисел, то если мы добавим любое число Ak+1 <= S, то предыдущее свойство сохранится, т.е. можно представить любое число от 1 до их суммы, только уже S + Ak+1, суммой некоторых этих чисел.
И как я должен был САМ до этого дойти? Как я должен был связать сумму набора чисел и то, что если добавить число <= этой суммы, то сохранится это свойство? Я просто не могу, у меня уже сил нету, я не помню, когда я решал реально сложную задачу САМ, у меня мотивация после такого тупо на ноль исходит. Вот я вижу, что некоторые пишут: "Я думал над задачей два дня и всё таки решил, ух, сложная задача". Но я не понимаю, как так можно сидеть и думать? Просто перебирать возможные пути решения? Ну, я перебирал. Первая мысль была просто рекурсию, зафигачить, но увидел, что ограничения не позволяют. Динамику тут тоже не впереть. Были ещё несколько бредовых идей, но они не прошли. И вот что мне делать, если все адекватные, на мой взгляд, варианты закончились? Тупо тыкать пальцем в небо и искать такие закономерности, которые даже после чтения разбора у меня в голове не могут уложиться? Может дело в питании, и мой мозг не получает витаминов, или то, что я каждый день 5+ часов ебусь с этими задачами? Сегодня вот проснулся, сел, прочитал эту задачу, ну а дальше вы знаете. И просто настолько апатичное настроение, весь день тупо проспал. И у меня уже появилось подсознательное отвращение к задачам, я боюсь их решать, потому что думаю, что опять нихера не решу, потрачу полтора часа пытаясь выдумать решение, которое не сработает, потом ещё полтора часа буду разбираться в разборе, а потом я уже как выжатый лимон. А мне ведь область брать надо. И вроде бы нет недостатка в практике, скорее даже переизбыток. С мая начал активно участвовать во всех раундах на Codeforces, в 90% случаев решаю одну задачу, дальше тупо ничего придумать не могу. После контеста, всегда с помощью разбора решаю вторую и третью задачу, причём стараюсь по максимуму разобраться, чтобы все моменты для меня были понятны. Анон, помоги советом или просто поддержи, мне будет очень приятно.