Автор MikeMirzayanov, история, 9 лет назад, По-русски

Работая со студентами, я часто сталкиваюсь с тем, что если задача не кажется им понятной с первого взгляда, то они и не могут ее решить. В самом деле, всегда рассказывают конкретные методы и приемы, но не то, как надо думать, чтобы применить их. В этой заметке я попробую обобщить мой опыт решения задач на соревнованиях по программированию. Впрочем, некоторые советы будут применимы и для олимпиад по математике или первых шагов в научной работе.

Итак, вы прочли задачу и не знаете как ее решать. Попробуйте следующие приемы, зачастую какой-то из них может помочь.

Прием 1: "Вспомнить всё"

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

Прием 2: "От частного к общему"

Представьте, что вы нашли решение задачи (ура!) Рассмотрите какой-то частный случай задачи. К нему, конечно, может быть применен алгоритм решения задачи. Поэтому, чтобы решить общую задачу вам необходимо решить все ее частные случаи. Попробуйте решить какой-либо частный случай (или несколько) и потом попытайтесь обобщить их до решения основной задачи. Такие частные случаи можно рассматривать как упрощения задачи, то есть рассуждать по принципу: "если я не знаю как решать сложную задачу, попробую-ка я ее упростить и найти решения упрощенной версии".

Популярные примеры упрощений (частных случаев):

  • вам сформулирована задача для дерева, рассмотрите ее вариант, когда дерево вырождается в путь;
  • в задаче фигурируют веса? рассмотрите вариант, когда все веса равны единице, или произвольному числу или есть только два различных веса (и так далее).

Обратите внимание, что решение частного случая почти всегда не проще общего, поэтому надо пытаться найти максимально простое или эффективное решение.

Прием 3: "Смелая гипотеза"

Не стесняйтесь делать смелые гипотезы, которые вам кажутся правдоподобными. Далеко не всегда на контестах надо доказывать решения, развивайте внутреннюю интуицию. Сделав гипотезу, попробуйте ее доказать — возможно, это получится или даст понимание как её опровергнуть. Обязательно потестируйте гипотезу на широком наборе тестов, ведь будет очень обидно потратить время на реализацию решения на базе её и опровергнуть только после этого.

Примеры частых гипотез:

  • ответ всегда существует;
  • количество состояний небольшое.
Прием 4: "Чтобы решать задачу, ты должен думать как задача"

В самом деле, поставьте себя на место лирического героя задачи, представьте что это ваша работа обрабатывать наборы входных данных. Подумайте как бы вы действовали в этом случае. Попробуйте обработать самостоятельно несколько небольших примеров. Если задача про игру, поиграйте в нее. Иногда я пытаюсь визуализировать процесс или модель, чтобы лучше его понять. Это немного похоже на то, как показывают в фильмах способ мышления ученых. Попробуйте думать образами, представьте ответ, посмотрите на то, как он получается.

Прием 5: "Думаем вместе"

Этот прием применим только в командных контестах. Вдвоем или втроем начинайте по очереди озвучивать какие-то понятные факты про задачу. Например: "если n четное, то ответ всегда 0", "если n простое, то решать надо так" и так далее. Иногда ваши коллеги будут подхватывать идеи и развивать их, так можно и дожать идею решения задачи до конца.

Прием 6: "Подбери метод"

Попробуйте перебрать популярные алгоритмы или методы, которые хоть как-то могут оказаться применимы для задачи. Полезно посмотреть на ограничения по задаче. Зафиксировав метод, попробуйте подумать над решением предположив, что задача решается с применением этого метода. Надо рассуждать как-то так: "Пусть задача решается с помощью разделяй-и-властвуй. Тогда пусть мы рекурсивно решили задачу для левой и правой половине, осталось как-то объединить эти ответы, как бы это сделать..."

Прием 7: "Распечатать-посмотреть"

Очень часто (особенно в задачах с небольшим вводом — одно/два числа) возникают какие-то закономерности в построении ответа. Чтобы увидеть закономерность иногда достаточно написать какой-то наивный метод решения задачи, сгенерировать ответы для большого количества тестов на небольших ограничениях и немного помедитировать над ответами. Чтобы не занимать компьютер, лучше распечатать полученные результаты и медитировать уже над листочком.

Иногда полезно выводить не только сам ответ, но и какую-то дополнительную информацию, например, способ получения ответа.

Прием 8: "Гуглим"

Этот прием можно применять, только если правила раунда/контеста это разрешают. Если задача на последовательности, то можно поискать ответы (см. прием 7) на сайте https://oeis.org/. Полезно понять формальную модель задачи и гуглить по правильным математическим терминам.

Вопрос к знатокам

А какие общеприменимые приемы используете вы?

Полный текст и комментарии »

  • Проголосовать: нравится
  • +731
  • Проголосовать: не нравится

Автор fcspartakm, история, 9 лет назад, По-русски

Привет, Codeforces!

28 сентября 2015 года в 12:00 MSK состоится очередной раунд Codeforces #322 для участников из второго дивизиона. Традиционно, участники из первого дивизиона приглашаются поучаствовать в соревновании вне конкурса. Обратите внимание на необычное время начала раунда!

Этот раунд проводится по задачам школьного этапа Всероссийской олимпиады школьников по информатике 2015/2016 года г. Саратова. Задачи для вас готовил я и недавно вернувшийся из армии Эдвард Давтян (Edvard).

Хотелось бы сказать большое спасибо Максиму Ахмедову (Zlobober) за помощь в подготовке задач, Марии Беловой (Delinur) за перевод условий на английский, Михаилу Мирзаянову (MikeMirzayanov) за замечательные системы Codeforces и Polygon, а также Владимиру Петрову (vovuh) за прорешивание задач.

Участникам будет предложено шесть задач и два часа на их решение. Разбалловка будет объявлена позднее.

UPD Разбалловка задач 500-1000-1500-2000-3000-3000. Всем удачи!

UPD2 Разбор

UPD3 Поздравляем победителей!

  1. Moe
  2. for_the_pride
  3. SakurakoujiRuna
  4. VNOI
  5. z123z123d

Полный текст и комментарии »

  • Проголосовать: нравится
  • +163
  • Проголосовать: не нравится

Автор Vladik, 9 лет назад, По-русски

Всем доброго времени суток!

22 сентября 2015 года в 19:30 MSK состоится очередной раунд для участников из второго дивизиона. Традиционно, участники из первого дивизиона могут участвовать в соревновании вне конкурса.

Авторами раунда являются я (Владислав Вишневский) и igdor99(Игорь Дорошев). Хотелось бы сказать большое спасибо Zlobober(Максиму Ахмедову) за помощь в подготовке задач, Delinur(Марии Беловой) за перевод условий на английский, MikeMirzayanov(Михаилу Мирзаянову) за замечательные системы Codeforces и Polygon, а также нашим друзьям daksenik(Дмитрию Аксенику) и irevt(Ивану Ревту) за помощь в подготовке раунда. Это наш первый раунд, и надеемся, что не последний!

Вам будет предложено 5 задач и 2 часа на их решение.

Главным героем раунда является попугай Кефа, любящий деньги и рестораны.

Всем удачи и высокого рейтинга!

UPD: Разбалловка — 750-1250-1500-2000-2500.

UPD: Разбор!

Полный текст и комментарии »

  • Проголосовать: нравится
  • +191
  • Проголосовать: не нравится

Автор RussianCodeCup, история, 9 лет назад, По-русски

Всем привет!

Финал Russian Code Cup в этом году пройдет онлайн, но финалисты могут по желанию приехать лично на одну из двух площадок на выбор: офис Mail.Ru Group в Москве или в Университет ИТМО в Санкт-Петербурге.

В то время как участники будут решать выданные задания, с 11:30 по московскому времени на сайте https://it.mail.ru/rcc в прямом эфире будет транслироваться ток-шоу, посвящённое прошлому, настоящему и будущему программирования и высоких технологий.

Среди гостей такие известные люди как Николай Никифоров — министр связи и массовых коммуникаций РФ, Наталья Касперская — генеральный директор InfoWatch, Сергей Андреев — президент ABBYY, Болтунов Олег — член PostgreSQL Foundation, Алексей Пажитнов — изобретатель игры «Тетрис» и многие другие.

Гости будут обмениваться мнениями по самым разным вопросам, связанным с развитием IT и программирования. В качестве ведущих выступят Антон Комолов и Михаил Мирзаянов, руководитель Центра олимпиадной подготовки программистов Саратовского Государственного Университета.

Трансляция пройдёт 19 сентября с 11.30 до 16.00 московского времени на https://it.mail.ru/rcc

Среди зрителей будут разыгываться призы, так что приглашаем всех присоединиться к трансляции Russian Code Cup, а финалистам желаем удачи!

Полный текст и комментарии »

  • Проголосовать: нравится
  • +60
  • Проголосовать: не нравится

Автор dreamoon_love_AA, история, 9 лет назад, По-английски

Hello, everyone! Codeforces Round #320 will be held at Sep/16/2015 18:00 MSK. Note that round starts in the unusual time!

The problems are from tmt514, Shik, drazil, and me(dreamoon_love_AA). Also we want to thank Zlobober for helping us preparing the round, AlexFetisov and winger for testing this round , Delinur for translating the statement into Russian, and MikeMirzayanov for Codeforces and Polygon.

This is my second time organizing a problemset for a Codeforces round (my previous round: #292). In my previous round all problems were provided by me. But I think that if problems are provided by more people, then the contest will be more interesting! So I asked my friends to help me this time. Hope everybody can have fun during the round!

Participants in each division will be given six tasks and two and a half hours for solving them (the last four problems in Div. 2 are as same as as the first four problems in Div. 1). Scoring system will be announced later closer to the start of the round.

Bayan is an Iranian software company working on large-scale web applications. It doesn't only develop the search engine, but also it holds an annual open competition Bayan Programming Contest with an on-site round in Tehran. The on-site round of 2015 became an international event with many strong participants.

Bayan has supported Codeforces on our Codeforces 5-year crowdfunding program. Thank you Bayan! This round is in your honor!

UPD 1: Due to technical reasons the round starts at 18:15 Moscow time.

UPD 2: The round will use the dynamic scoring with 250 points step.

UPD 3: Problems are ordered according to their supposed difficulty.

UPD 4: Winners!

Div1:

1) Um_nik

2) Egor

3) Endagorion

Div2:

1) EmaxxMaster

2) gongy

3) Irisviel_von_Einzber

UPD5: link of Editorial

Полный текст и комментарии »

Теги 320
  • Проголосовать: нравится
  • +359
  • Проголосовать: не нравится

Автор Psyho, история, 9 лет назад, По-английски

Updated on 07/12 for the last time

  • Postmortem -- explains a lot of stuff and it might help you decide if there's any point in watching this
  • Twitch stream -- original livestream
  • YT mirror -- because for some reason a lot of people wanted it

If you have any feedback (bad or good, doesn't matter as long as it's constructive), I'll be more than happy to hear it. Especially since I might do more of these (just not that long).

Updated on 27/11, because it got into "recent actions"

The stream will happen 28/11 Saturday 9:15 AM GMT+1 to 29/11 Sunday 10:15 AM GMT+1

The address for the stream is http://www.twitch.tv/fakepsyho — yes, I mailed with the support and coding on twitch is now perfectly fine. Also, the stream contains all of the essential information, so I'm not duplicating it here.

Also, I'm using this mic, so don't worry about sound quality ;)

Edits:

0) For people who are confused about who took my handle. This guy.

1) I thought I should make it a little bit more clear: I really want to hear what you would like to see. There are no stupid ideas. Want me to eat 0.5kg burger? Want me to play IWBTG? Want me to do push-ups (pls no)? It's entirely up to you what I will talk about. I'm giving free upvotes for every suggestion ;) My goal is to make it interesting for everyone (i.e. across all of the skill levels), so don't be afraid to suggest something that you may feel is very basic.

Short version:

  • I will participate unofficially in M24, I don't want to break my streak of winning three 24h contests in a row ;)

  • I will do the livestream with full commentary (and most probably with full code although it may not happen due to security risks)

  • Since this is for you (across all the skill levels), I need to know what you'd like to see!

Longer version:

Since twitch was born, I thought about doing an educational livestream with solving some problems. The two biggest obstacles are: I wanted to do the livestream during the onsite contest (otherwise there's no thrill, and the conditions are artificial, so even educational values suffers). Unfortunately, this means that the contest would require the participants to have no internet connection. The other thing is that, doing the contest without commentary (and without interacting with chat) is quite boring. If I had participated, this would really hurt my performance. So, this really only works when I'm not 100% focused on winning. Unofficial participation in Marathon24 is a rare occasion to fulfill both of those requirements.

Current status:

  • If you have any ideas for the setup let me know. I will stream the editor + any possible visualization (pretty much everything that happens on my main screen). I may stream the livecam if people want it for some reason. I'm guessing I will also use some virtual whiteboard for drawing/explaining things. I may set up secondary stream exclusively for visualization (so that people will know how the game looks even if I'm not looking at the visualization). I may set up dropbox so that all of my local files will be synchronized. The last thing may not happen due to security risk (some participating team could download it and it would be hard to detect).

  • The stream will be full 24 hours. Probably even longer since I'll start a little earlier. I may also do some pre-finals testing stream, just to be sure to not mess up things during the finals.

  • I'm considering using Twitch. I have some experience with using OBS since I started doing some lame speedrunning recently.

  • Small disclaimer. I should also add that this is not 100% confirmed yet, but folks behind Marathon24 loved the idea (or they are convincing liars).

The things I can do:

  • I want to start at the same time as other competitors will do. The first 15-30 minutes will be reserved time for me (and hopefully viewers too) to read the problem statement.

  • For at least first few hours I will focus on the problem in the same way I would in the contest. I will definitely go way slower since I will be explaining all of the stuff I'm doing. I guess I will shift my priorities dynamically, depending on how I perform.

  • I could try to do live interviews with some participants. That may be hard to do technically, but it's definitely a possibility. The problem is, people don't really like being hassled during the 24h contests.

  • I'm not tied to talking only about M24. For example I could take a 2h break to talk about TC's marathons or stuff like that. It's entirely up to what you want to see.

  • You will be able to ask me questions via chat (less reliable) or twitter (more reliable). I'll try to answer them, unless I will be already braindead ;)

So, to sum things up. Livestream. I need your ideas. Also, if you don't want to miss the news follow me on twitter. And don't worry. I don't spam there too much, since I haven't figured what's the point of it ;)

Полный текст и комментарии »

  • Проголосовать: нравится
  • +332
  • Проголосовать: не нравится

Автор malcolm, 9 лет назад, По-русски

Всем привет!

Сегодня в 19.30 по московскому времени состоится Codeforces Round #319, который настоятельно не рекомендуется кому-либо пропускать.

Автор раунда — я, меня зовут Дима Горбунов, и это мой первый раунд на Codeforces. Я очень надеюсь, что вам понравится раунд, и каждый найдет себе задачу по вкусу. Для того, чтобы увеличить вероятность этого события, пожалуйста, прочтите все задачи этого контеста.

Как всегда, благодарю Zlobober за неоценимую помощь при подготовке контеста и утонченный юмор, sankear за написание перекрестных решений, Delinur за перевод условий на английский язык и MikeMirzayanov за потрясающие системы Codeforces и Polygon.

У вас будет два часа на то, чтобы решить 5 задач. Успехов!

UPD. Разбалловка в первом дивизионе — 500-1250-1250-2000-2750.

Во втором — 500-1250-1500-2250-2250.

UPD2. Из-за тестов большого размера по некоторым задачам, системное тестирование будет идти медленно (возможно, займёт несколько часов). Благодарим за терпение!

UPD3. Разбор можно найти по ссылке.

UPD4. Winners!

Div1:

1). Marcin_smu

2). mnbvmar

3). I_love_Tanya_Romanova

Div2:

1). latisel

2). wrong_order

3). ntitry826

Отдельный респект al13n за правильное решение задачи Div1.E во время контеста!

Полный текст и комментарии »

  • Проголосовать: нравится
  • +302
  • Проголосовать: не нравится

Автор ibra, 9 лет назад, перевод, По-русски

Привет Codeforces!

Как вы наверняка уже знаете из предыдущего поста, Bubble Cup это соревнование по программированию организуемое силами Центра разработки Microsoft в Сербии (Microsoft Development Center Serbia) на протяжении последних 8 лет. И финал этого года приближается!

В этом году у нас появилась замечательная идея провести зеркало этого финала на Codeforces! Мы хотели бы поблагодарить MikeMirzayanov и команду Codeforces за замечательную платформу, а также их поддержку в подготовке и проведении.

Соревнование начнется 6-ого сентября в воскресение в 11-00 утра (по Московскому времени). Длительность контеста — 5 часов, будут использоваться правила ACM ICPC. Это будет командный контест на Codeforces, между командами (1-3) человек. Количество задач (7-10) будет объявлено позднее.

Контест подготовлен силами работников MDCS и участником knightL. + спасибо участнику Milanin за помощь в тестировании.

В виду того что правила этого контеста не совсем обычны для Codeforces (и в виду того что зеркало мы проводим в первый раз) контест будет нерейтинговым.

10 Лучших команд получат футболки (каждому члену команды) +10 футболок будут разданы случайно командам из топ-100.

UPD обратите внимание на то, что мы обновили максимальное возможное число людей в команде

Разбор, результаты и пост про футболки будет немного позднее

Ссылка на пост с результатами и разбором

Полный текст и комментарии »

  • Проголосовать: нравится
  • +309
  • Проголосовать: не нравится

Автор DuX, 9 лет назад, По-английски

Hello Codeforces,

In less than a two weeks, finals of 8th edition of Bubble Cup will be held in Belgrade, organized by Microsoft Development Center Serbia.

Unfortunately, there wont be Bubble Run contest this year (which was held last two years for university students in the same tame as BCup, and it was a 24h marathon style contest), but only ACM-style 5 hour long contest for both university and high school teams in the same category. You can read more about contest on the official website, and read tasks and solutions from past years in the booklets. (There are some very interesting tasks, especially from Run contests, so I encourge you all to take a look at them).

Usually, the contest was interesting only to teams from Serbia and it's region, but every year we can see more and more teams from other countries participating in qualifications, and now there will be teams from 7 different countries from Eastern Europe participating in the finals, which is the most I think. Certanly, it will be the toughest Bubble Cup ever, and that's the reason why I'm listing teams here. I hope there will be even more strong teams from other countries next year!

The new cool thing this year will be a BC conference where we will hear talks about competitive programming and maybe something more, from Psyho (Psyho), misof and MikeMirzayanov! (I can't wait for this! :D). Also, there will be a big party after the contest as MDCS celebrates 10 years anniversary.

For teams and guests who will come to the finals: Hope you will enjoy Belgrade and Serbia, and if you want to go to some fun places here, hang out, or maybe even spend few more days in this beautiful city, I'll be glad to help you :) If you have any questions, just post it in the comments, or send me a message. See you soon!

Teams (sorted by bonus penalty time):

Полный текст и комментарии »

  • Проголосовать: нравится
  • +116
  • Проголосовать: не нравится

Автор Errichto, 9 лет назад, По-английски

Hello Codeforces community!

Codeforces Round #318 (for both divisions) will take place on August, 29 at 19:30 MSK. It is the Thanks-Round devoted to Russian Code Cup. You will be given 5 problems and 2 hours to solve them. Scoring will be announced close to the round. I strongly recommend you to read all problems.

RussianCodeCup is the largest open programming competiton for Russian-speaking participants by Mail.Ru Group. Its history started in 2011. And since the first championship RCC offers great problems and generous prizes. This year finals will be held on September, 19th. Wish good luck to all the finalists! Thank you, RussianCodeCup, for your gift on the 5th anniversary of Codeforces!

I am honoured to be a problem setter for this round. I wouldn't do it alone. I want to thank Zlobober for his great help with problems preparation and MikeMirzayanov (and all people working on Codeforces and Polygon) for this awesome site. It's an amazing place to learn and compete. My big thanks to winger and AlexFetisov for their help with testing a round. And to Delinur for translating statements. As you see, not only a setter creates a round.

It's my first Codeforces round but not my first problems here. You can check out A, C and D from VK Cup 2015 — Round 2. Also you might remember some of my problems in TC rounds. I'm very happy with finally preparing a full round for Codeforces and I hope you will enjoy it. I tried my best to prepare nice and diverse problemset, you will judge it. In all problems you will have to help Limak who is quite unusual bear.

I wish you great fun and no frustrating bugs. Looking forward to seeing you!

UPD: Scoring is 500-1000- 1750 -2000-2500 in div1 and 500-1000-1500-2000- 2750 in div2. Enjoy a round!

UPD: Editorial

UPD: Contest is over. The winners:

Div1:

  1. Marcin_smu
  2. mnbvmar
  3. subscriber
  4. LoneFox
  5. Shef

Div2:

  1. cescmentation_folch (5 problems solved!)
  2. fhxb520630 (5 problems solved!)
  3. bugCollector
  4. Sehnsucht
  5. okaduki1

And note from an author. There were some wrong solutions passing. Sorry for that. I tried my best to create strong tests but I failed a bit. Did you like this round? What do you think about problems?

Thanks for participating!

Полный текст и комментарии »

  • Проголосовать: нравится
  • +380
  • Проголосовать: не нравится