Блог пользователя I_love_Tanya_Romanova

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

Недавно ballon в обсуждении SnarkNews winter series сказал, что мне пора делать скринкасты. Не знаю, многим ли интересно что-то такое увидеть, но пусть будет. Как я ответил в той теме, регулярно писать скринкасты я не вижу смысла. Но один контест все же решил записать — для тех, кому интересно; для упрощения ответа всем тем, кто задает вопросы вида "секрет красного цвета в правильной настройке Visual Studio" (да, есть пользователи, которые вроде бы вполне серьезно спрашивают подобные вещи); да и просто испробовать новый опыт.

Ниже — запись моего участия в SNWS 2015 Round 4. Весь экшн оканчивается на 47 минуте, когда все задачи сданы, дальше только обновление монитора.

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

»
9 лет назад, # |
Rev. 2   Проголосовать: нравится +19 Проголосовать: не нравится

Круто! Можешь подробнее рассказать принцип чтения условий? :)

Было ощущение, что ты читаешь с нескольких страниц сразу по паре предложений. И по большей части только сэмплы. Я не успеваю прочитать даже половину условия к моменту, когда ты уже начинаешь кодить... :)

UPD: Кажется, нашел частичный ответ на свой вопрос здесь.

  • »
    »
    9 лет назад, # ^ |
      Проголосовать: нравится +15 Проголосовать: не нравится

    Верх А прочел, пока открывал другие; дальше действительно начинал с сэмплов. Там есть надежда, что повезет быстро найти что-то очевидное/короткое/знакомое (как было с D в первом туре); по семплах так же часто видно, понравится ли задача в плане кодинга — например, читаешь-читаешь, вроде бы просто и понятно, можно писать, а потом увидел, что нужно еще очень неприятное восстановление ответа, и формат аутпута весьма тупой и с кучей случаев...

    Еще, если начинать с ограничений, то это очень сильно помогает в решении. В задаче С сразу бросается в глаза маленькая точность, например. По D я сначала наугад написал "наверное какая-то динамика за квадрат", а потом еще 3-4 минуты придумывал детали динамики, потому что она не была для меня очевидной. Не всегда выигрышная стратегия — здесь бывают обидные проколы, как когда я на тренировке час убил на довольно очевидную О(N6), увидев N <  = 20 и пытаясь придумать O(2N)

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

    И с решением аналогично. Как я сейчас понимаю, по E и F можно было все сделать намного проще и короче, но для этого нужно было подумать) Из-за "придумывания на ходу" — бывают довольно странные вещи в решении. Например, по F я считал w,h, а потом чуть позже втупую переименовал их ниже в коде, потому что понял, что так будет удобнее. По E у меня есть счетчик outdeg, который вообще нигде не используется — только потому что часто в таких задачах он нужен)

    А еще бывает, что задача падает из-за весьма глупого бага, потому что спешил. По довольно простой D из третьего тура у меня минус из-за того, что я сдал вообще не ту задачу — я там считал что-то вроде количества возможных развитий матча, а не количества возможных итоговых счетов. Ну это вообще рулетка получается) С упором на скорость, почти без тестирования; если где-то что-то не так, то почти наверняка все плохо; зато если все нормально, то это очень хорошее место.

    Я пишу мало контестов в таком стиле, обычно ведь времени больше, задачи сложнее... В Петрозаводске даже самая простая задача набора, вероятно, будет довольно сложной по меркам SNWS. И даже простые задачи на СF/TC тестируются более тщательно, чем любая из-задач скринкаста. А если бы я так командные контесты решил писать, то сокомандники бы меня... не поняли бы они меня:)

    Скринкаст передает сам стиль написания говнокода. Например, оглашать переменные в самом конце, да еще и глобально — наследие того, что сначала некоторое время я писал на Pascal.

    • »
      »
      »
      9 лет назад, # ^ |
        Проголосовать: нравится +5 Проголосовать: не нравится

      Видимо у меня старая архитектура процессора в голове :) Мне трудно одновременно кодить и читать условие... Надо попрактиковаться)

      А ты произносишь прочитанные слова про себя в голове, или нет?

      • »
        »
        »
        »
        9 лет назад, # ^ |
          Проголосовать: нравится +10 Проголосовать: не нравится

        Задумался над вопросом о словах:) Он не совсем понятный мне. Если я правильно понял, о чем идет речь — преимущественно я в голове подпеваю тому, что играет в наушниках)

        Так ведь "кодить" — понятие растяжимое. Есть вещи, над которыми надо думать, а когда пишешь cin>>tests; for (;tests;--tests) в тысячный раз, то это как-то механически уже. Ты ведь когда за завтраком газету читаешь — не думаешь над тем, как ложкой в рот попасть.

        • »
          »
          »
          »
          »
          9 лет назад, # ^ |
            Проголосовать: нравится +26 Проголосовать: не нравится

          Ага, понятно :)

          Мне просто интересно, использует ли кто-нибудь из сообщества реально какие-либо техники скорочтения или это всё чепуха.

          Насчет вопроса о словах... Насколько я знаю, подобные методики основаны на подавлении субвокализации (внутреннего проговаривания читаемого текста). Отсюда и вопрос был.

          Если бы это существенно ускоряло процесс, было бы здорово :)

»
9 лет назад, # |
  Проголосовать: нравится 0 Проголосовать: не нравится

You type really fast. BTW how do you get some-sort of random lyrics at the top of your code?

  • »
    »
    9 лет назад, # ^ |
      Проголосовать: нравится +8 Проголосовать: не нравится

    They aren't "random" :) It often happens that song from the top was actually playing while I was writing a solution or some time before/after it.

    I can actually type it, or just copy-paste — first way takes some time but gives one more opportunity to improve typing skills.

    • »
      »
      »
      9 лет назад, # ^ |
        Проголосовать: нравится 0 Проголосовать: не нравится

      What is your typing method? What fingers do you use to type special characters like '[',']','<','>' etc?

»
9 лет назад, # |
Rev. 3   Проголосовать: нравится 0 Проголосовать: не нравится

I am curious to know about some of your #define's for example #define y0 sdkfaslhagaklsldk.
Also, Congratulations on leading the contest You haven't mentioned that here. Really humble of you.

  • »
    »
    9 лет назад, # ^ |
      Проголосовать: нравится +6 Проголосовать: не нравится

    y0, y1, left, right and some other names can't be used as the names of global variables because they are defined in some of the headers.

    • »
      »
      »
      9 лет назад, # ^ |
        Проголосовать: нравится 0 Проголосовать: не нравится

      Thanks I didn't know that. I wonder what's the problem with asking something here about the code or commenting the fact that a person is down to earth. Thanks again dalex .