Я хочу высказаться не как в основном фиолетовый участник, а как препод, работающий с учениками и студентами — олимпиадниками разного уровня продвинутости (от самого начального до дипломов на ученическом Всеукре / полуфинале Украины, он же четвертьфинал мира).
Как мне кажется, на протяжении последнего примерно полудесятка раундов в большинстве (едва ли не всех кроме Codeforces Round #141 (Div. 2) от 27.09.2012) имели место излишне сложные задачи A, B Div. 2. Насколько я понимаю, почти все эти раунды готовили молодые люди, полные задора и желания выдать интересные задачи. Но, как по мне, проект codeforces должен определиться: или он становится элитным и не массово-образовательным даже в части Div. 2 (и явно объявляет об этом, и полностью отказывается от задач, решаемых одной формулой / одним простым for-ом без массива, и многие преподы включая меня ищут другие ресурсы для начального уровня), или восстанавливает уровень задачи A, B Div. 2 таким, каким он был ранее (более простым). А то сейчас с одной стороны происходит не привлечение новых людей, а отпугивание, а с другой — явных объявлений об изменении политики как-то не наблюдается, и утешительные задачи время от времени таки появляются. И что делать преподам — непонятно.
Разумеется, я не призываю "уменьшать под мой фиолетовый уровень" планку Div.1. Я призываю только определиться с политикой насчёт A, B Div. 2.
Разумеется, я приглашаю к дискуссии всех участников codeforces, но прошу указывать объём именно преподского опыта.
Могу ответить как соавтор множества div.2 раундов.
Мы всегда старались сделать так, чтобы задачи A и B решались участниками любого уровня, максимум требовали знаний школьного уровня, например по простейшим физическим законам. Цель авторов — чтобы было интересно всем, и тем, кто первый раз пришел на соревнование, и тем, кто тут уже почти живет и круто решает задачи :)
Но далеко не всегда можно придумать интересную задачу на один цикл или условие, как вы хотите, повторюсь, автор хочет сделать интересной даже задачу А. Поэтому не вижу ничего плохого в том, чтобы в таком случае задача А была посложнее.
Кроме того общий уровень программирования в мире повышается, сложности задач растут — этого нельзя отрицать.
Ну а напоследок, говорить "плохие авторы дают плохие задачи, и или вы меняете политику, или я от вас ухожу" — некрасиво.
Я дико извиняюсь, конечно, но мне кажется, что стоит все-таки сначала научить учеников сортировать массивы и писать не один простой for, а, например, два. К тому же, если задачи будут такие, как хотите вы, то таким, как я, контесты писать будет совсем не интересно. До большинства задач первого дивизиона, я пока не раскачался, за исключением, может быть A (div 1), и крайне редко B (div 1). Должно быть развитие. Человек должен развиваться, а это достигается путем решения контестов и прорвы задач, таких, чтобы задачи были выше собственного уровня. Поймите, div 2 — это все-таки по большей части тренировки. В общем к чему я веду, уход от излишней простоты задач — это не зло даже для тех людей, которые пока умеют решать только задачи на один простой for.
Сбалансированность задач контеста — вещь редкая. Наверное, не существует контеста, сбалансированного по сложности для всех участников любого уровня. Но, наверное, я в этом вопросе поддержу автора поста, а не Вас и уж тем более не NALP — возможно, стоит давать задачи чуть более "боянистыми", даже, возможно, именно бояны иногда и стоит давать в див2 — чтобы СП занималось больше людей, чтобы новые люди приходили в проект и постепенно прокачивались.
Прекрасно понимаю Вашу позицию, касающуюся того что первые две задачи сдаются достаточно быстро, а остальные закодить не получается. Но, во-первых, одинаково сбалансированного для всех проблемсета не бывает. Во-вторых, надо прокачиваться дальше. И, даже если вам чего-то не хватает, чтобы решить задачу A(B, C) div1 — никто Вам не мешает открыть эту задачу и со всех сторон ее изучить, придумать решение, работающее на других ограничениях, прочитать разбор этой задачи. Если это делать, в конце концов вы начнете решать такие задачи. Или, если не решать, то по крайней мере придумывать(а за этим, очень надеюсь, научитесь реализовывать — в этом не могу точно сказать, потому что сам еще не умею:))
даже многие специалисты(психологи) заявляют: "Чтобы человек развивался, он должен общаться с людьми, которые умнее его".
Так и задачи должны быть сложнее, чтобы видеть свою планку и спустя какое-то время поднять её.
Я сам только в этом году закончил школу (где у нас были факультативные занятия по олимпиадному программированию, в т.ч. участие в разных контестах), особых результатов не добился, хотя даже что-то и занимал (кстати наш школьный контестер bigint.ru). Пока себе поставил такую цель — на каждом контесте решать как минимум задачи А и В. Свои знаия и способности оцениваю еще и на С (почти всегда могу решить, но скорее всего не успею). Основные проблемы, из-за которых я не всегда решаю 2 задачи: 1. шум в голове 2. начинаю тупить и развивать изначально неправильный алгоритм (почти сумел от этого избавиться) 3. недостаток знаний (если недоучил на уроках, или не заполнил пробелы, т.е. если я чего-то не знаю, то уже знаю что искать и откуда списывать, правда не всегда удается, ибо см. пункт 1) 4. мыслю однобоко, трачу довольно много времени на построение призмы, через которую надо смотреть (заметил, что в большинстве идейных задач мой ход мыслей — это предельно возможное сокращение перебора, т.е. "лобового решения"), редко бывает чтобы я прямо сразу увидел скрытое решение. Другое дело если задача просто на несложную реализацию — тут вопрос уже в другом (вроде как последняя А), просто нужен банк решенных задач в голове.
Как мне кажется эти проблемы могут изжить себя при переходе на новый язык программирования (мысли при перестроении втанут на свои места) и во время дальнейшего обучения (надо не только учавствовать, но и изучать что-то вне контестов).
codeforces позволяет смотреть чужие решения, перенимать опыт. Думаю для обучения это самый пододящий формат.
Ну вот я, вообще синюшный участник, со скромным объёмом преподского опыта в 4 года — всегда считал что нарочито простые задачи это зло. Может они в чём-то ободряют тренирующегося, но они ничему не учат.
Учиться можно анализируя свои ошибки или чужие успехи после контеста. Задачи на обработку строки в один проход, суммирование чисел или сортировку нужны пожалуй только если новичок пришёл и хочет потестить систему отсылки задач и т.п. Но для этого есть дорешивание, вирт.контесты и т.п.
Продолжительность контеста 2 часа... По-моему по одной задачке из обсуждаемых контестов за 2 часа можно осилить на любом адекватном уровне.
Ведь смысл соревнований не в усилении собственной самооценки, а в тренировке спортивных программистов. Если я не ошибаюсь конечно в понимании идеологии заложенной авторами ресурса.
какая нафиг политика!? авторы изо всех сил, прилагая массу усилий, стараются сделать задачи интересными, идейными, как в див1, так и в див2, а вы тут носом воротите, скажите спасибо, что вообще есть такое место, где можно тренироваться и обсуждать.
есть куча сайтов с обучающими задачами, на один цикл или иф, не надо див2 превращать в безыдейный треш.
PS. всем в конце концов не угодишь: одни хотят идейные задачи, другим вот подавай простые
Тыкнкул в первый попавшийся Div. 2. Задача на цикл с if'ом внутри. 221B - Маленький Слоник и числа
Мне кажется, надо разделять понятия задач и упражнений. На контестах — задачи. Упражнения, тем более такие простые, вы можете сделать сами в polygon'е и залить на codeforces в качесте тренировки.
Вы согласны, что 221B не относится к "последнему полудесятку"?
Вот объясните мне, тупому, за что минуса father(this)-сообщению.
Приведённый Fefer_Ivan-ом в качестве контрпримера 221B столь же мимо кассы, как если б я утверждал, что среди двузначных (в десятичной системе счисления) чётных чисел не бывает простых, а мне в ответ "контрпример", что "число 2, хоть и чётное, а простое". Ну и что? Оно не является контрпримером, потому что в утверждении говорится о двузначных. Так и 221B (раунд 136) не является контрпримером, потому что не относится к последнему полудесятку (138--142), о котором (но за исключением 141) собственно речь.
Наверное, потому что вы достали фразу из контекста. А именно убрали выделенное жирным слово:
"Как мне кажется, на протяжении последнего примерно полудесятка раундов..."
А еще я написал, что не специально выискивал "контрпример", а просто тыкнул в раунд, какой первый под мышку попался.
Отвечу сразу всем. Что готовить раунд — это работа, я знаю. На одной только НетОИ общее количество моих задач (за все годы) наверно уже перевалило за полусотню, точно не считал.
Но я знаю другое: когда препод даёт ученику заранее неподъёмное задание — дурак препод, а не ученик. И когда я говорил ученикам "решайте codeforces", ориентируясь на один уровень задач, а на протяжении последних нескольких раундов имеет место другой (более высокий) уровень — я получаюсь сволочью, которая без толку мучает детей.
Посему мне и интересно понять, то ли мне надо сказать, что codeforces — немного высоковат уровень, а пока ограничимся исключительно прорешиванием архивов без участия в именно соревнованиях, то ли всё это врЕменное случайное отклонение.
Или это только мне одному кажется, что среди именно последнего полудесятка раундов (**кроме** #141 (Div. 2) от 27.09.2012) уровень A--B Div. 2 оказался заметно выше, чем уровень A--B Div. 2 всего предыдущего?
И не надо приводить как контрпример более ранние раунды!!! Речь идёт, повторяю, именно о последнем полудесятке раундов, кроме #141 (Div. 2). Именно их (и только их) видели те, кому я рекомендовал codeforces в этом учебном году.
Раунд #142. Задача A — просто посортить и один раз пройти, либо просто проходить кучу раз по массиву, что тоже проходило по ограничениям, из разбора это было видно. Задача B — дикий баян, который по идее должны давать всем, во время разбора теории чисел, а если люди этого не знали, то в самом условии была проведена аналогия с простыми числами, и, на мой взгляд, догадаться до решения совсем не сложно. Извлечь корень и проверить на простоту. Разве это сложные задачи? Здесь не нужны никакие особые знания алгоритмов и структур данных.
UPD. Посмотрел задачу A в #141 (div 2). Это же просто смешно что-либо говорить по поводу сложности. Найти кол-во различных чисел среди 4-ех и вывести ответ. Неужели это задача чрезмерной сложности?
"Просто посортить" — это тот же уровень для самой простой задачи младшей лиги, который был на протяжении бОльшей части истории codeforces? Хотя, конечно, ограничение 1000, позволяющие сортить как угодно — таки для младшей лиги.
Дык я и говорю — #141 (div 2) было тем исключением, в котором давались простые задачи A, B Div. 2. У_меня (нет, не претензии, а вопрос "это случайность или это изменение политики?") к задачам A, B Div. 2, последнего полудесятка раундов, кроме раунда #141 (div 2).
Извиняюсь, не заметил
Задача на ровно два if'а. 227A - Куда свернуть?
Ну там надо знать про векторное произведение, лично я это на первом курсе выучил, а тут речь о начинающих идет, т.е. в большинстве своем о школьниках
Можно проверить что треугольник прямоугольный по теореме Пифагора, лол : )
С этого места, пожалуйста, поподробнее...
Затупил, извините.
могу не согласиться. уравнение прямой (векторное произведение) можно при желании найти и изучить,нарешать задачак
Речь идет не об этом. Он имел в виду, что для начинающих участников не всегда хватает базы знаний, чтобы решать те задачи, которые авторы посчитали простыми.
да, я с вами согласен, когда я показал задачи A Div2 своим одноклассникам, они прочитали условие, поняли его, но решить не в состоянии.
Почему? потому, что не хватает достаточной базы для решения задач (школьная программа). Поэтому я считаю, что, если человек-самоучка, он сам может не решить даже А Div2.
Вы противоречите себе. Здесь вы сказали, что человек может самостоятельно изучить то, что требуется для решения первых задач. А теперь говорите, что самоучка не в состоянии этого сделать.
Смотря какой человек.Есть люди-самоучки которые решат и E Div2.
Наполовину — см. ответ dalex-а. Наполовину — таки уели (показали что я сначала был слишком категоричен). Даже не_зная векторного произведения, соорудить правильное решение из немного бОльшего количества if-ов в принципе можно. Так что тут, чтоб судить, надо ещё посмотреть, насколько хорошо претесты отметали неправильные решения. Это сейчас можно как-то легко и просто увидеть?
Можно в статусе отфильтровать решения, которые падали на тестах с номерами <= 7. Это минимальное количество претестов.
А как сообщество и администрация относятся к мнению, что нынче уже пришло время поделиться не на 2 дивизиона, а на 3? Кажется, сие мнение когда-то ещё до моей регистрации было рассмотрено и отвергнуто... Но, может, то, что было невовремя тогда, стало вовремя сейчас?
на 3? зачем на 3?
Я так понимаю:
3 div: зеленые/серые
2 div: не в рейтинге/синие/фиолетовые
1 div: желтые/красные.
Но, мне и сейчас нравится.
Ну, чтоб 1-ый оставить как есть, чтоб во 2-ом считалось нормальным, что в задаче A сортировка (возможно, не самая эффективная), а в 3-ем можно было почти гарантированно решать как минимум одну задачу, вообще не зная массивов.
UPD. Ну, или можно заодно и чуть приподнять планку 1-го дивизиона... И мне решительно всё равно, что вследствие этого я могу из него вылететь. Я взрослый толстый дядька, переживу.
мне кажется для второго(особенно фиолетовые) задача А, как не самая эффективная сортировка — не серьезно.
Может, и не серьёзно. Но говорить, что входить в олимпиады можно только полностью научившись программировать — ещё более несерьёзно. На фиг нужны олимпиады, если для того, чтоб начинать ими заниматься, надо уже уметь писать, например, бинарный поиск? Причём как одну из многих составляющих громоздкого алгоритма, так, что когда что-то не работает — далеко не сразу поймёшь, бинпоиск ли не работает или что-то другое.
UPD хотя, пример с бинпоиском похоже опять неудачный. Просто бинпоиск и квиксорт — примеры идеологически вроде не очень сложных алгоритмов, которые особо легко ломаются от мелких багов в реализации. Но кто и сам с первого раза вызубрил правильные реализации и не пытался кого-то научить этим алгоритмам — тот этого может и не замечать.
Вообще проблема в том, что нет базы знаний с привязанными к ним упражнениям. Типа как e-maxx.ru, только для маленьких.
Ведь чтобы участвовать в олимпиадах по математике, нужно представлять себе метод математической индукции, например.
http://informatics.mccme.ru/moodle/mod/resource/view.php?id=671
Да это ВЫ предлагаете фиолетовых в Div.2! Вы опять приводите контрпример не непосредственно к моему предложению, а сначала его видоизменяете, а потом уже приводите контрпример к своей версии моего предложения.
Я вас не понимаю. А какое разделение на ТРИ дивизиона предлагаете вы?
я более чем уверен, что третьего дивизиона не будет, и вот почему:
Это надо либо уменьшать количество раундов Div.1 и Div.2, либо увеличивать общее количество раундов. Первое нравится только вам, а всем остальным не нравится. А второе требует больших сил, нужны новые авторы, новые задачи.. и то и другое в большом дефиците.
Состав Div.1 очень стабилен, состав Div.2 тоже достаточно стабилен, то есть тут очень много участников пишут соревнования снова и снова, постоянно общаются и т.д. Участники Div.3 будут очень текучи, будет множество левых аккаунтов в стиле "написал контест, слил рейтинг — зарегал новый чистенький". Это никому не нужно..
Вообще уже сказали: если вы хотите задачи проще, так сделайте их сами! Есть Полигон, есть тренировки, в чем проблема? А так вы хотите прислать своих учеников на все готовое...
Посмотрите на титульную страницу informatics.mccme.ru, и увидите, что порядка 60% курсов — закрытые (через кодовое слово). Я свои курсы делал открытыми. Посмотрите netoi.org.ua за последние восемь лет, и увидите, что моя фамилия (І.Порубльов) есть под большинством списков задач (в списке с другими авторами). Посмотрите на http://codeforces.net/blog/entry/2880 и увидите, что я давал задачи на SEERC, имел желание обсудить их результаты, услышать внятные отзывы (а получил почему-то главным образом минусы, но то дело десятое).
Можно, после этого мне не будут говорить, будто я только и умею, что посылать своих учеников на всё готовое?
UPD А стабильность — не всегда благо. Наибольшая стабильность — на кладбище.
Эм, а тогда в чем проблема сделать с десяток обучающих задач и выложить в тренировки? Люди скажут вам спасибо
Проблема в том, что к плохим последствиям привело благое намерение "пусть дети пораньше начинают играться в режиме именно ограниченного во времени соревнования (решения которого к тому же списать не у кого)". Я вроде как провёл анализ среднего уровня задач Div.2 и всё выглядело более-менее адекватно... и тут по результатам не просто одного соревнования, а большинства соревнований текущего учебного года получается, что всё совершенно не адекватно.
так сделайте ограниченный по времени контест (или несколько), выдавая небольшими порциями задачи на 2 часа или менее, мне кажется администрация предоставляет все условия
то есть вы увидели, что ваши ученики не справляются, и решили написать пост о том, что авторы прям как в мультике про Винни-Пуха: "Это неправильные пчелы, они делают неправильный мед" (с)
я правильно понял хронологию событий?
P.S. ссылка по теме http://www.youtube.com/watch?v=6G7PF_VOp40
Не знаю насколько мне уместно рассуждать, но все же. Если вы сочли эти задачи сложноватыми для своих учеников, то так оно и есть, вам-то виднее. Сразу по поводу стабильности — здесь стабильность я наблюдаю только в организации, но ни разу ее нет в задачах. Очень рад в каждом контесте видеть для себя что-то новое. Быстро адаптировать все что знаю, по возможности додумывать и использовать в новой задаче — вот чему бы я хотел научиться, ведь в этом и вижу основную ценность всего олимпиадного программирования. Насколько я понимаю, вы бы хотели появления нового дивизиона для возможности соревновательного решения типовых задач, т.е. и тренировка, и азартно, и запутаться шанс меньше. Наверняка это было бы полезно и мне самому, но все же такое содержание как-то не вписывается в форму CF. Даже как-то трудно объяснить почему. Наверное потому что здесь проще учиться пользоваться тем, что умеешь, чем что-то брать на вооружение (но второе тоже возможно, да еще как, при таком-то всеобщем содействии)
По поводу стабильности говорилось "состав участников стабилен, и это хорошо; а попытка ввести ещё более младший дивизион приведёт к нестабильности состава участников, и это плохо".
А я вот сомневаюсь, что ресурс для стабильного (следовательно, ограниченного) круга пользователей — действительно лучше, чем расширять этот самый круг пользователей.
Ненене... я не говорил категорично, что это плохо, я говорил, что это нецелесообразно.
Как известно, есть два способа развития: экстенсивный и интенсивный. Вы предлагаете первый способ, то есть тратить силы на новых и новых участников, начиная от самых-самых маленьких. Главное — количество! А я за интенсивный путь развития.
Повторюсь еще раз, если вы хотите, то вы можете сделать тренировки на ваш вкус и цвет, никто вам не запрещает, никто не будет говорить, что вы что-то делаете неправильно. В этом смысле (каждый может сделать соревнования, которые ему нужны) Кодефорсесу нет равных.
Еще один аргумент против третьего дивизиона это сложности в подсчете рейтинга. И при двух-то дивизионах возникает множество проблем с синхронизацией общего рейтинга. Уверен, что команда сайта затратила очень много ресурсов на то, чтобы достижения участников в соревнованиях разных дивизионов адекватно переносились на общий рейтинг. Я не могу оценить При возникновении третьего дивизиона начнется полнейший бардак в этом месте, и не факт что задача сведения трёх дивизионов сопоставима по сложности с двумя.
в чем проблема? да просто автор хочет на ёлку залезть и не ободраться, вот в чем проблема!
Соглашусь с автором поста по поводу задач A div2. Хотя эта просьба должна быть направлена к авторам контестов, а не администрации.
С задачами B всё не так очевидно. Если делать их легче, то может быть большой разрыв между сложностью B и C. Хотя раньше раунды div2 в среднем были действительно проще.
да нормальные раунды, сколько можно ныть.
как раз-таки перепад сложности между B и C более чем в половине Div. 2 раундов — огромный. возьмем в пример раунд 141: простой очевидный перебор в B и четырехмерная динамика в C. или раунд 142 в котором вроде бы понятная задача C упала у многих людей из первого дивизиона.
Там E была намного более решаемая.
Кому как. Я вообще не догадывался, как ту Е решать. Зато С написал и сдал, почти не думая. Это все зависит скорее от того, у кого какой опыт.
UPD. О каком именно раунде вы сказали?
она была намного более решаемая для участников Div. 1 задачи должны располагаться не только по возрастанию сложности, но и по возрастании знаний, требуемых для их решения. как уже говорили — задача А на косое произведение векторов элементарна для первокурсника и нерешаема для школьника.
Ну нерешаема — это вы загнули. А как же он?
Можно повернуть вектор (x, y) на 90 градусов по формуле ( - y, x). Потом проверить, что этот вектор указывает на точку С. Потом Повернуть еще 2 раза и опять проверить. Без векторного произведения.
Лолчто? Нерешаема для школьника? косое и скалярное произведение векторов, уравнение прямой — все это проходится в 8 — 9 классах. Сам в 10 учусь, так что знаю.
Тебе просто повезло со школой
Может и так :)
Та задача имела и альтернативные пути решения. Например, такой, с помощью аккуратного разбора ветвлениями.
Мне кажется соревнования на codeforces совсем неподходящее место для обучения школьников с нулевыми знаниями, и не серьезно требовать готовить задачи для людей, которые не знают что такое массив. Все-таки олимпиады подразумевают наличие хоть каких-то базовых знаний.
Это немедленно приводит к философскому вопросу "Какова вообще роль и миссия олимпиад?". И на него можно отвечать по-разному. И, в зависимости от того, как ответить, можно считать, что олимпиады вообще не нужны; можно считать, что пока не научился писать алгоритм Дейкстры за O(Mlog N) — на олимпиадах делать нечего; можно считать, что вхождение в олимпиады должно начинаться ещё до изучения массивов. И что характерно, каждый из вариантов по-своему прав.
И меня мучает не то, что команда сайта придерживается не того мнения, которого придерживаюсь я. А то, что после последних примерно пяти раундов мне совершенно перестало быть понятно мнение команды сайта.
Есть мысль, что неплохо бы посчитать статистику числа людей, решивших задачи A/B/C на последних раундах и сравнить её с более ранними. А от неё уже смотреть, насколько решабельны задачи.
Не правда ли, что отрешав старые див2 А и В ученик прокачается минимум до уровня новых?
Впервые слышу, чтобы преподаватель называл себя "препод" :о
Кажется сложность задачи на измеряется числом if-ов и for-ов в решении. Судить о том, насколько задачи "подходят" можно по проценту решивших их.
Всё супер. Спасибо авторам за задачи!!!=)
Если решать только простые задачи, которые тебе "нравятся", то на этом далеко не уедешь. Раньше я так и делал — из серенького не вылазил... В этом то вся прелесть, что можно подумать над более сложной задачей, неординарной. Потом почитать разбор, а если потом еще на емаксе, например, алгоритм прочитать и реализовать, вот тогда толк будет.