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

Автор maksay, 15 лет назад, По-русски
Только у меня веб-интерфейс не грузится?
(Обсуждение задач - после конца контеста)

UPD: 
Извините, но это просто нет слов!
В 3:30 у нас было 5 сданных задач и подходила 6я. Внезано сначала ретестят Н, затем включают полный ретест и просят не сабмитить до сообщения от жюри. Ретест длится почти полтора часа, и никакого сообщения нету. Наконец в 4:40 жюри отвечает на чей-то вопрос, что оказывается, сабмитить уже можно. Впрочем, некоторые участники сабмитили во время реджаджа, но это их дело.

В теперь о совсем фееричном: задача Е, которая проходила до реджаджа, после дает ТЛ 3.. Задача Н, которая проходила до реджаджа, да ВА/ТЛ 19. При этом ограничения подкручены так, что на ней у нас не проходил достаточно оптимальный квадрат, та же ситуация в Д. В общем, не понравилось!

Хотел уточнить, как решали Е и Д и Н те, у кого она прошла? С какой асимптотикой? У нас был N^2logN и N^2 и N^2 соответственно.

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

15 лет назад, скрыть # |
 
Проголосовать: нравится +1 Проголосовать: не нравится
Подскажите, пожалуйста, в чём суть решения задачи J(Вилсон). 
15 лет назад, скрыть # |
 
Проголосовать: нравится +1 Проголосовать: не нравится
Костя, подожди! Ещё у первого дивизиона контест не закончился.
15 лет назад, скрыть # |
 
Проголосовать: нравится 0 Проголосовать: не нравится
Как L (про насекомых) решалась?
А то 5 без неё сделали, единственные такие, видимо как-то просто :/
15 лет назад, скрыть # |
 
Проголосовать: нравится +28 Проголосовать: не нравится
Хотелось бы спросить авторов. Зачем делать вывод таким, чтобы он занимал не одну, а 10 строк кода.
Более того, до этих 10 строк невозможно додуматься не зная хорошо английский язык?
Задачу решить легче, чем вывести ответ. Это какое-то неуважение к участникам.
  • 15 лет назад, скрыть # ^ |
     
    Проголосовать: нравится +4 Проголосовать: не нравится
    Присоединюсь. Особенно порадовала строчка "There are 1 ways" в одной из задач. Если уж вы решили делать такой вывод, то сделайте его нормально.
  • 15 лет назад, скрыть # ^ |
     
    Проголосовать: нравится +1 Проголосовать: не нравится
    Если вы про задачу J, то действительно с выводом большие проблемы, особенно если в школе изучаешь немецкий язык :)
  • 15 лет назад, скрыть # ^ |
     
    Проголосовать: нравится +1 Проголосовать: не нравится
    "...не зная хорошо английский язык..."
    во во, это про меня...
  • 15 лет назад, скрыть # ^ |
     
    Проголосовать: нравится +44 Проголосовать: не нравится
    Прошу прошения за прямоту, но вот мне бы очень хотелось выругаться матом на авторов ТАКОЙ задачи. И если бы я сел писать комментарий часочек назад так и произошло. Но теперь когда я остыл от этих эмоций просто скажу: ФИИИИ!!! Большое и неприятное ФИИИ!!!!

    P.S. Есть еще много чего мне хочется сказать и организаторам, которые реджаджили аксептоды, из-за чего приходилось заново и заново возвращаться к задачам, и авторам за "понятное" замечательное условие в задачах F и J. Но увы прийдется промолчать, потому что цензурными словами высказать этого недовольства не получится.
  • 15 лет назад, скрыть # ^ |
     
    Проголосовать: нравится 0 Проголосовать: не нравится
    Наверное, авторы хотели сделать что-то похожее на формат задач финала. Но такой геморрой с выводом числительных - слишком уж неприятно. Хотя бы в условии формально описали, как выводить...
    • 15 лет назад, скрыть # ^ |
      Rev. 2  
      Проголосовать: нравится 0 Проголосовать: не нравится
      Участникам самого ЧУ эпичности провалу добавило то, что условия были только на русском языке с таким выводом. Были бы всё на английском - было бы хоть чуть-чуть человечней. Ну и просто добавить в пример 11, 12, 13 - непонятно в чём проблема.
      • 15 лет назад, скрыть # ^ |
         
        Проголосовать: нравится 0 Проголосовать: не нравится
        Более того, на вполне логичный вопрос от школьных команд "когда какие окончания выводить" следовали ответы без комментариев.

        В целом чемпионат не понравился (несмотря на то, что мы заняли весьма неплохое для нас 5-е место среди участников самого ЧУ) - слишком много геморроя с такими мелочами, как длинные неосмысленные выходные данные, не обговоренные четко в условии критически важные моменты (например, в F вы за сколько догадались, что пара может состоять из двух одинаковых людей?). Из сданных нашей командой 6 задач мне больше всего понравилась E - довольно сложная, интересная задача. Мы решили ее при помощи DP, Z-функции и подсчета разностей значений функции ответа.
        • 15 лет назад, скрыть # ^ |
           
          Проголосовать: нравится +8 Проголосовать: не нравится
          Вообще вполне логичный ответ. Условие прозрачно намекает, что выводить надо согласно правилам английского языка. Вы же не думаете, что ответ жюри может состоять из них?

          например, в F вы за сколько догадались, что пара может состоять из двух одинаковых людей?
          Мы на это потратили не очень много времени, переключившись на другие задачи.
        • 15 лет назад, скрыть # ^ |
           
          Проголосовать: нравится +5 Проголосовать: не нравится
          Про E, спасибо :-)) Моя задачка...
          Специальная задачка для любителей сложных строковых алгоритмов)
          Решение, которые написал бы я, - чистое DP.

          Видимо, я уже накушался самых дурацких условий... Ни J, ни F при прочтении не вызвали вопросов. Когда я читал условия, в J мне было очевидно из sample-а и "знания" английского, а в F - из фразы "Строка с номером i состоит из i бит". Это намекает, что i-й бит важен.
          • 15 лет назад, скрыть # ^ |
             
            Проголосовать: нравится +8 Проголосовать: не нравится
            То, что человек может быть другом сам с собой -- это как раз пофигу. Но вот то, что если у i-го человека друзей нет, то (i, i) -- пара человек, у которых нет общих друзей, может быть и звучит логично, но должно быть описано в условии (или как минимум в кларе, на который нам ответили No comments).
          • 15 лет назад, скрыть # ^ |
             
            Проголосовать: нравится 0 Проголосовать: не нравится
            Вот и жюри объявилось)) Серег пожалейте участников в следующий раз)
            • 15 лет назад, скрыть # ^ |
               
              Проголосовать: нравится +1 Проголосовать: не нравится
              Жюри появилось уже давно... Видел длинный пост от Гассы?
              А это я из Казахстана нашел полчасика посмотреть, какие еще баги кто нашел)

              P.S. Я участников в этот раз честно пожалел, как мог))) в D O(N^2), в E O(N^2)... в B можно было сжать граф до 20 000 вершин... А представляешь в D был бы Nlog^2, в E Nlog^2, а в B 5x5x5 ? :-) а сложную геометрию K просто выкинули на фиг еще до тура.
          • 15 лет назад, скрыть # ^ |
             
            Проголосовать: нравится 0 Проголосовать: не нравится
            Имхо, то, что i-ый бит важен, как раз не указывает на то, что участники пары должны быть различны - петли в графе важны,  даже когда пары состоят из различных людей: например, граф на двух вершинах и с ребрами 1-2 и 1-1, тогда петля в первой вершине запрещает пару (1,2). Единственным формальным указанием на то, что пара может состоять из одинаковых людей, которое мне удалось найти, это отсутствие слова "различные".
15 лет назад, скрыть # |
 
Проголосовать: нравится 0 Проголосовать: не нравится
Интересны идеи решения на D и F, ибо вроде написал на ac, а мне всё wa и wa(...
15 лет назад, скрыть # |
 
Проголосовать: нравится 0 Проголосовать: не нравится
Еще хотелось бы решения F и H
(H засылали за n^2*logn - ТЛ9, а F почему-то ловила ВА2)
  • 15 лет назад, скрыть # ^ |
    Rev. 2  
    Проголосовать: нравится +5 Проголосовать: не нравится
    H можно сделать за O(n2). При генерации чисел, они уже идут в порядке возрастания.
    Первоначально первый список это и будет пересечения. Дальше пересекаем его со 2 списком. Т.е. сливаем списки это за O(N) делается. И выбираем такие элементы, которые встречаются дважды это тоже за O(N) легко делается. Получаем список пересечения первых 2 списков и его будем пересекать с 3 списком и т.д. В конце получим список перечения всех списков.
    Сложность O(N2) получилась и это у меня довало TL, пока не убрал деление по модулю при генерации заменив его на операцию &(232 - 1)
15 лет назад, скрыть # |
 
Проголосовать: нравится 0 Проголосовать: не нравится
Какой прикол в F?
может ли человек дружить сам с собой?)
как все же биты нумеровались и куда приписывались нули?)
Я считывал строку s.
для просмотра j бита(нумерация с 0) брал s[j / 6] символ и там брал (5 - j%6) бит) или все же я что-то не так понял?)
15 лет назад, скрыть # |
 
Проголосовать: нравится +1 Проголосовать: не нравится
Как решать E и A?
  • 15 лет назад, скрыть # ^ |
    Rev. 3  
    Проголосовать: нравится +5 Проголосовать: не нравится
    Задача А
    Просто промоделируем и смотрим на каком месте вылетит Катя. Пусть это место j. При этом Васю просто не учитываем, смотрим еще сколько раз мы пропустили Васю, пусть это будет число k. Тогда Катя может занять место max(1, j - k)
  • 15 лет назад, скрыть # ^ |
    Rev. 2  
    Проголосовать: нравится 0 Проголосовать: не нравится
    Задача Е.
    С помощью суффиксных массивов, можно сравнивать за логорифм две подстроки. Можно почитать на e-maxx-e.

    Решается с помощью динамики dp[i][j] кол-во способов разбить суффикс начинающий в символе i, если первое слово заканчивается не раньше j - 1символа.

    Перебераем i и j. находим такое минимальное k, что подстрока с i по (j - 1) символ лексиграфически меньше чем подстрока с  j по (k - 1) символ.
    Если такое k нашлось, то dp[i][j] = dp[i][j + 1] + dp[j][k], иначе dp[i][j] = dp[i][j + 1].
    • 15 лет назад, скрыть # ^ |
       
      Проголосовать: нравится 0 Проголосовать: не нравится
      Хешами тоже прекрасно сравниваются.
    • 15 лет назад, скрыть # ^ |
       
      Проголосовать: нравится 0 Проголосовать: не нравится
      Нафиг хеши и суфструктуры. Можно сверхтупой динамикой за квадрат посчитать lcp подстрок одной строки.
    • 15 лет назад, скрыть # ^ |
       
      Проголосовать: нравится 0 Проголосовать: не нравится

      >>Если такое k нашлось, то dp[i][j] = dp[i][j + 1] + dp[i + 1][k], иначе dp[i][j] = dp[i][j + 1].

      Мне кажется, ты хотел написать dp[i][j] = dp[i][j + 1] + dp[>>j<<][k]. Или я не прав?

      И кстати, как находить такое k быстрее чем бинарным поиском со сравнениями за O(logN)? Иначе итоговая ассимптотика должна равняться O(N^2 log^2N).

      Этот пост уже можно считать "некро", но если ты еще помнишь суть описанного - ответь плз, интересно :)

      • 15 лет назад, скрыть # ^ |
        Rev. 2  
        Проголосовать: нравится 0 Проголосовать: не нравится
        да действительно была ошибка)
        Ну наверное можно и хешами сравнивать за O(1), чуть выше как раз хеши обсуждались.
        Хотя я делал используя суффексные массивы . Я искал наибольший совпадающий префикс за O(log(N)), не использую бинарный поиск.
        int k = j;
        for (int q = 13; q >= 0; q--) {
           if (c[q][i] == c[q][k]) {
                i += (1 << q);
                k += (1 << q);
           }
        }
        k++;
        примерно так, но еще там разные условия нужно добавить.
  • 15 лет назад, скрыть # ^ |
     
    Проголосовать: нравится 0 Проголосовать: не нравится
    У меня вроде немного по другому задача E ДП. хотя наверно тоже самое, но без суфф мас.
    F[i][j] - кол-во способов разбить строку с 1 по j символ, при этом последнее слово это подстрока i..j. Теперь увидим какие у нас могут быть переходы, перейти мы можем только в позиции вида 
    F[j + 1][q], где q = x..n, т.е мы можем дальше поставить слово с j+1 по q, но так как если прибавить 1 символ то по прежнему можно ставить такое слово то можно составить и i..q+1, i..q+2 ... i..n. Но если менять все состояния это долго, то так как будет изменятся от некоторой позиции до конца, то мы будем изменять именно первую такую позицию, а все остальные заполнятся по ходу ДП с помощью F[i][j + 1] += F[i][j]. Таким способом нам не придётся менять всё, изменим одну, а она дальше по порядочку всё прибавит до конца.

    Осталось определять эту позицию первую, тут опять же понятно что если у нас есть i..j, то составлять мы будем с j+1 по некоторую q. Посчитаем z-функцию для подстроки j+1 .. n.
    Теперь если на z[j + 1] >= j - i + 1, то это значит что всё начало нового слова которое мы поставим будет совпадать с началом которое стоит последнее, так как нам нельзя ставить одинаковые, то получаем что первая позиция с которой мы сможем поставить наше первое слово это j + (j - i + 1) + 1. 
    Теперь если z[j + 1] < j - i + 1, то получается что нужно проверить что первый символ после не совпадающих частей больше ли он соответствующего символа в последнем слове, если да то от него можно опять же ставить. Ну а вообще это просто действуем как и при сравнении строк. Сложность выходит O(N^2).

    Сложно как то обьяснил, вот код для наглядности: http://pastebin.com/xgbLHGDx


  • 15 лет назад, скрыть # ^ |
     
    Проголосовать: нравится 0 Проголосовать: не нравится
    E
    значит будет писать динамику по a[i][j] - количество способов сложить наш словарь так до j символа что все корректно и последнее слово a[i][j]. теперь у нас есть слово a[i][j] и мы хотим найти все слова в которые он может перейти. Понятно что если нам будет подходить слово a[j+1][x], то нам и будет подходить слово a[j+1][y] где x<y<=n, т.к. если к последнему слову дописывать символу хуже не станет. Поэтому нам надо найти ближайшее такое слово. И так, просчитаем f[i][j] - максимальный общий пефикс i-ого и j-ого суффикса (допустим l = f[i][j]). Тогда если l < j - i + 1 и s[i + l] > s[j + l + 1], то следующего слова не существует (потому что следующее слово начинается на l букв нашего слова и дальше символа меньше нашего). Иначе замечаем если l > j - i + 1 (то есть дальше идет наше слово и ещё что-то), то ближайшее слово будет a[j+1][j+1+j-i+1], и оставшиеся случай когда l <= j - i + 1, тогда ближайшее a[j+1][j+1+l] (можно написать проще, совместить два последних варинта в a[j+1][j+1+min(l,j-i+1)]), но это ближайшее слово, поэтому из каждого a[i][j] я могу перейти в a[i][j+1] - то есть как бы взять последнее слово в своем списке и расширишь.

    вкратце:
    инициализация a[1][1]=1 (индеск с 1), для каждого a[i][j] делаем переход в a[i][j+1] и в a[j+1][j+1+min(f[i][j], j-i+1)] если не выполняется условие (f[i][j]<j-i+1 и s[i+f[i][j]] > s[j+1+f[i][j]]).

    P.S. Прошу прощения за много букв.
15 лет назад, скрыть # |
 
Проголосовать: нравится +2 Проголосовать: не нравится
Две задачи в течении часа на компиляции... как то вообще не здорово сегодня было.
15 лет назад, скрыть # |
 
Проголосовать: нравится 0 Проголосовать: не нравится
Скиньте, пожалуйста, ссылку на задачи.
15 лет назад, скрыть # |
 
Проголосовать: нравится +55 Проголосовать: не нравится
На мой взгляд, отвратительный контест. Делать полный реджадж во время контеста - это просто свинство. Авторам за шутки вида "elevenTH" и "twelveTH" надо руки поотрывать. Я не обязан знать английский язык, этого нет в правилах. Многие вообще учат немецкий или французский...

Накосячили - сделали реджадж. Ну тогда они должны поставить аксептедам время, на которых мы раньше получали OK! У нас например, разница во времени минут 200 будет. А это много мест вверх. 

Самым умным решением было на все вопросы по F отвечать "read the problem". Условие задачи никак не соотносится с действительностью. У меня есть одно объяснение случаю вида "человек не дружит сам с собой" - это авторы на самом деле не дружат с некоторыми своими частями тела, особенно где шапка расположена.

Авторам голову надо оторвать. Зла не хватает.
15 лет назад, скрыть # |
 
Проголосовать: нравится +5 Проголосовать: не нравится
У кого-нибудь остался семпл к задаче Н. На сайте чёт недоступно
15 лет назад, скрыть # |
 
Проголосовать: нравится 0 Проголосовать: не нравится
H задача просто жесть) квадрат, если писать все в long long то ТЛ 17 зато правильное решение.
Если писать в unsigned int то ВА 19. Если хранить в long long а пересчитывать используя тип unsigned int - то ТЛ 10!!! (не понимаю вообще как!) В итоге засабмител 5 или 6 решения используя в различных моментах типы int, unsiged int, long long... Мы так и не поняли почему - все решения ТЛ 10, кроме 1 - оно зашло как то на шару)) Кароче полное извращение а не задача, похоже на угодай какое решение писали авторы (нахера такой ТЛ впритык тоже не ясно)

За задачу F надо руки сломать автору, потому что половину условия пришлось придумывать!
15 лет назад, скрыть # |
 
Проголосовать: нравится +20 Проголосовать: не нравится
Да кстати, есть здесь авторы ЭТОГО контеста? Или они сидят и отмалчиваются, тихо наблюдая как контест поливают грязью? Может они смогут нам что-нибудь объяснить, например свою мотивацию к подобным действиям? Да и в конце концов то, хочется просто взглянуть этим людям в глаза. Эх, да забыл, точнее взглянуть им в аватар. =)
  • 15 лет назад, скрыть # ^ |
     
    Проголосовать: нравится 0 Проголосовать: не нравится
    Ну одну мотивацию мне кажется я знаю - как обычно контест сделан вчера вечером или седня ночью)))
    • 15 лет назад, скрыть # ^ |
      Rev. 2  
      Проголосовать: нравится 0 Проголосовать: не нравится
      Это объясняет баги, но не объясняет маразматические форматы output'а 
      • 15 лет назад, скрыть # ^ |
         
        Проголосовать: нравится 0 Проголосовать: не нравится
        Я думаю что такой формат вывода - это типа подготовка к финалу. На это также можно списать нарочитую непонятность условий :)
        • 15 лет назад, скрыть # ^ |
          Rev. 2  
          Проголосовать: нравится 0 Проголосовать: не нравится
          Тогда предложение Олегу Богдановичу провести парочку внезачетных раундов по задачам с финалов, чтобы народ освоился, понял, для чего такие издевательства нужны бывают, ит.д.

          Плюс ко всему, насколько я мог судить из обсуждений на форуме TC и различных блогах, на финале TL обычно выставляется относительно приятный. По крайней мере, непонятно, как наличие или отсутствие модуля/long long в H могло бы при этом привести к TL (если уж это попытка устроить раунд в духе финала)
      • 15 лет назад, скрыть # ^ |
         
        Проголосовать: нравится +2 Проголосовать: не нравится
        Ой забыл написать) половина задач бояны и халяву (сложно поспорить) и авторы решили усложнить их сделав дибильный формат outputа и непонятное условие)))
  • 15 лет назад, скрыть # ^ |
     
    Проголосовать: нравится 0 Проголосовать: не нравится
    А ты знаешь в СПбГУ всегда любят поизвращатся над участниками... ну в последнее время точно =)
    • 15 лет назад, скрыть # ^ |
       
      Проголосовать: нравится 0 Проголосовать: не нравится
      ты зря) обычно хорошие контесты делают, но про все в последний момент - сам однажды наблюдал, видимо так и в этот раз
      • 15 лет назад, скрыть # ^ |
         
        Проголосовать: нравится 0 Проголосовать: не нравится
        Нет контесты хорошие, я не спорю. Мне нравятся питерские контесты... гораздо больше других... но порой случается fail... но обычно это бывает в паре задач на контест... но сегодня было слишком заметно... 
15 лет назад, скрыть # |
Rev. 2  
Проголосовать: нравится +3 Проголосовать: не нравится
А как решать G ?
Думал над динамикой по дереву. Да так и не придумал.
  • 15 лет назад, скрыть # ^ |
     
    Проголосовать: нравится +10 Проголосовать: не нравится
    Действительно, динамика по дереву. Подвесим дерево, состояние будет (v, x), где v - вершина, x означает, что если мы пойдём вниз по дереву от v, все расстояния до помеченных вершин будут >=x. Ответ для (v, x) складывается из ответа для (v, x + 1) и количества способов, если через какого-то из детей расстояние получилось ровно x. Переберём самого "левого" из этих детей - тогда у нас будет произведение чего-то слева, ответа для этого ребёнка и чего-то справа. Все произведения можно посчитать за O(количества детей), после этого за O(количества детей) посчитать ответ. Правда, надо было писать аккуратно, чтобы не обрадоваться TL'ю после реджаджа и существенному увеличению штрафного времени в результате.
    • 15 лет назад, скрыть # ^ |
       
      Проголосовать: нравится 0 Проголосовать: не нравится
      Можно немного подробней. Как посчитать ответ когда мы уже зафиксировали самого "левого" сына? Как зафиксировать тот факт, что в наших сыновьях мы не можем что-то поставить, так что это помешает друг другу. Т.е. внутри одного поддерева понятно как это сделать, а вот как сделать чтобы два поддерева не конфликтовали не понятно
15 лет назад, скрыть # |
 
Проголосовать: нравится +11 Проголосовать: не нравится

Присоединяюсь к всеобщему негодованию =)

Кроме всего вышеперечисленного порадовал также СЕ по причине "Compilation timed out", несмотря на то, что на нашей машине код компилировался мгновенно. На клары в духе "Что за дела?" отвечать никто не желал, и лишь спустя эн десятков минут выяснилось, что это ML на самом деле (ошиблись кол-вом нулей) 0_о

Просто нет слов.

15 лет назад, скрыть # |
 
Проголосовать: нравится -8 Проголосовать: не нравится
Весна пришла просто, вот и божат :)) 
15 лет назад, скрыть # |
 
Проголосовать: нравится 0 Проголосовать: не нравится
Хотелось бы узнать, за какую сложность решалась задача I? Решение за O(N3logN) получает ТЛ 15.
  • 15 лет назад, скрыть # ^ |
    Rev. 2  
    Проголосовать: нравится 0 Проголосовать: не нравится
    Там какое-то читерское решение.
    Посчитаем максимальный ответ для прямоугольников со сторонами не более 20 клеток = Answer за О (300^2 * 20^2).
    Далее на каждом шаге проверяем, существует ли ответ Answer+EPS. Если он существует, то увеличиваем Answer на 1. Утверждается, что таких шагов будет немного и все это влезет в ТЛ. Таким образом мы сократили границы ответа для бинпоиска.

    Такое решение объяснял Сергей Копелиович.
    • 15 лет назад, скрыть # ^ |
       
      Проголосовать: нравится 0 Проголосовать: не нравится
      А можно чуть подробнее про проверку и про увеличение answer на 1?
      • 15 лет назад, скрыть # ^ |
         
        Проголосовать: нравится +5 Проголосовать: не нравится
        А что рассказать?)
        1) Решение за O(N^3logMax) - бинпоиск по ответу, а далее решение стандартной задачи за O(N^3). В целом за O(N^3) мы можем для любого x находить ответ >= x, если такой есть.
        2) Бинпоиск - это слишком долго. logMax = log (10^{16}) ~= 54..
        3) Нашли какой-то ответ. Улучшаем его. Как улучшать? Можно проверять, можно ли получить Answer + 1e-6. Проверяем за O(N^3) и увеличивать на столько, на сколько найдет O(N^3).
  • 15 лет назад, скрыть # ^ |
     
    Проголосовать: нравится 0 Проголосовать: не нравится
    А как с такой сложностью решать? У нас была дихотомия по ответу (хитрая в лонг лонгах), но там log существенно больше. Но так ва10, потому что или потеря точности или переполнение лонг лонга. На яве с длинкой тоже решение дает ТЛ7. Теперь начинаю сомневаться, что, дописав длинку на С++, пройдет.
    • 15 лет назад, скрыть # ^ |
       
      Проголосовать: нравится 0 Проголосовать: не нравится
      Переберем все пары строк (i1,i2) такие что i2>=i1. Будем в полоске между ними искать прямоугольник с макс отношением Sum/(i2-i1+1+length), где length его длина.

      Пусть h=i2-i1+1 и S(i) - сумма всех чисел в прямоугольнике (i1,0) (i2,i). Положим S(-1)=0. Тогда нужно найти такие i и j что (S(i)-S(j))/(h+i-j) - максимально. Пусть оно равно A. Тогда запишем:
      S(i)-S(j)=A*(h+i-j)
      -(h+i)*A+S(i)=(-j)*A+S(j)              (1)

      Слева и справа записаны уравнения прямых (А - независимая переменная). Зафиксируем прямую i и найдем такое j, что абсцисса точки пересечения прямой слева и справа - максимальная (т.е. А - максимальное). Заметим, что при увеличении j угловой коефициент только уменьшается, значит мы в стеке можем хранить прямые, которые принадлежат верхнему огибающему множеству прямых для всех j<i. Тогда бинарным поиском в нем мы можем находить прямую, у которой в пересечении с прямой с левой стороны (1) максимальная абсцисса. Максимум из всех абсцисс и будет ответом для данной полоски (i1,i2).

      Ответ можно хранить в виде пары лонг лонгов (числитель и знаменатель) и при выводе можно даже руками посчитать сколько угодно знаков после запятой.
      • 15 лет назад, скрыть # ^ |
         
        Проголосовать: нравится +5 Проголосовать: не нравится
        Т.е. у вас таки N^3logN? log именно N? Классно...)
        • 15 лет назад, скрыть # ^ |
           
          Проголосовать: нравится 0 Проголосовать: не нравится
          А у меня решение O(N^3 + N log N log *), авторы наверное про него не знают?
          • 15 лет назад, скрыть # ^ |
             
            Проголосовать: нравится +5 Проголосовать: не нравится
            Не нужно меня во множественном числе) Рассказывай.
            • 15 лет назад, скрыть # ^ |
              Rev. 3  
              Проголосовать: нравится +23 Проголосовать: не нравится

              Решение до которого все додумались – это для каждой полоски за O(N log *) посчитать бинарным поиском ответ. Это решение базируется на том факте, что мы можем для полоски за O(N) проверить больше ли ответ на ней чем какое-то значение. Добавим в тупое решение такую штуку, перед тем как запускать бинарный поиск, просто проверим за O(N) можем ли мы улучшить наш текущий ответ, если можем, то только тогда запускаем бинарный поиск.

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

        • 15 лет назад, скрыть # ^ |
           
          Проголосовать: нравится 0 Проголосовать: не нравится
          Да, logN. Там бинпоиск делается в стеке прямых, которых не больше N. Но, как оказалось, работает дольше чем N^3*log(точность).
          • 15 лет назад, скрыть # ^ |
            Rev. 2  
            Проголосовать: нравится 0 Проголосовать: не нравится
            У меня решение работает за O(N^3). Идея такая же как написал KADR. Но вот бинпоиск в стеке можно убрать. Бинпоиск дает абсциссу точки пересечения текущей прямой и випуклой оболочки. Но если мы уже знаем абсциссу для предидущей прямой, то меньшие асбсцисси нам уже не подходят потому, что они решения не улучшат. Итого достаточно держать один указатель на прямую в випуклой оболочке, которую нам нужно проверять. Но у меня все-равно ТЛЕ на 19. Вернее один раз на 19, а потом тот же код - ТЛЕ 17. Кажется тестирующая система не очень хорошо работает.
  • 15 лет назад, скрыть # ^ |
     
    Проголосовать: нравится 0 Проголосовать: не нравится
    На контесте у меня было N^3*log точности.
    Сейчас додумал просто N*N*N*log N, не поверите, использовать выпуклую оболочку. Доказывать умею :)
  • 15 лет назад, скрыть # ^ |
     
    Проголосовать: нравится 0 Проголосовать: не нравится
    Мы на дорешивании пропихнули "тупой" бинпоиск по ответу за O(N^3 * log(точность))
15 лет назад, скрыть # |
 
Проголосовать: нравится +9 Проголосовать: не нравится
Добавлю в копилку негодований.

К некоторым задачам не указали пределы по некоторым переменным.
Например, в задаче M на количество предложений (переменная m), причём на клар отвечали "Без комментариев".
Никаких ограничений (количество символов и т.п.) на данную переменную нет, то есть их хоть 10^1000 могло быть, ассимптотику угадывайте сами.
15 лет назад, скрыть # |
 
Проголосовать: нравится +2 Проголосовать: не нравится
А, и да, условия выкладывать раньше начала тоже очень весело, наверное.
15 лет назад, скрыть # |
 
Проголосовать: нравится +38 Проголосовать: не нравится

а еще меня каждый раз очень радовала строка в условии:

Следуйте формату вывода, указанному в примере, как можно точнее.

15 лет назад, скрыть # |
 
Проголосовать: нравится 0 Проголосовать: не нравится
Подскажите, как задачка К решалась?
  • 15 лет назад, скрыть # ^ |
     
    Проголосовать: нравится 0 Проголосовать: не нравится
    мы её пытались сдать 4 раза и всегда RE 2. а она уже 1.5 часа тестируется на рандомных тестах и ни одного RE :-(
    n/m=q1/b+q2/b^2+q3/b^3... | *b
    n*b/m=q1+q2/b+q3/b^2...
    всё в правой части, кроме q1, меньше единицы. значит, q1:=(n*b) div m; новый числитель:=(n*b) mod m;
    таким образом найдём q1. теперь период появится, когда мы встретим такое сочетание qi и числителя, которое уже было.
    К сожалению, написать мы это, видимо, по-человечески, не смогли.
    Скажите, пожалуйста, как её было решать (или писать) правильно?
    • 15 лет назад, скрыть # ^ |
       
      Проголосовать: нравится 0 Проголосовать: не нравится
      На контесте тоже кучу раз посылал программу и у неё было то ТЛ 2, то РЕ 2. Оказалось, что там есть дроби, у которых числитель больше знаменателя (не смотря на условия). Как только я добавил n=n%m всё сразу прошло.
15 лет назад, скрыть # |
 
Проголосовать: нравится +15 Проголосовать: не нравится
Какого!!!!!!!

Во время проведения Гран-При СПб для первого дивизиона произошло несколько существенных сбоев, повлиявших на результат раунда. В частности, Гран-При не стартовал автоматически, после ручного старта Гран-При в результате неполного перезапуска систем были установлены значения Time Limit, равные 20 секунд для всех задач. Также произошло расхождение в тестах для задач J и I (оказавшиеся в системе тесты соответствовали прошлой версии задачи с другим текстовым выводом), приведшее к пересуживанию задач, причём в случае задачи I пересуживание произошло достаточно поздно. Однако на проведение турнира для второго дивизиона эти сбои влияния не оказали.

В связи с этим жюри Открытого Кубка приняло решение считать Гран-При СПб для команд первого дивизиона внезачётным.


Наконец-то удалось написать опенкап (из 4 предыдущих в двух зачли результат в ПЗ, в двух  результат на зимней школе) и очень хорошо написали (3-е место). Могли бы в 10-ку уже попасть в общем зачете и на тебе.
  • 15 лет назад, скрыть # ^ |
     
    Проголосовать: нравится +5 Проголосовать: не нравится
    Надо устроить голосование как после Codeforces Beta Round #58.
  • 15 лет назад, скрыть # ^ |
     
    Проголосовать: нравится 0 Проголосовать: не нравится
    Ну, согласитесь, что баги в процессе контеста действительно очень сильно повлияли на результаты (в частности, произошёл random_shuffle 2-10 мест из-за rejudge). Так что сделать этот контест внезачётным кажется вполне разумным.
    • 15 лет назад, скрыть # ^ |
       
      Проголосовать: нравится 0 Проголосовать: не нравится
      Согласен. Это я так, с горяча написал. Если б вам не срубили G так подло, то как минимум вы бы нас точно обогнали. Но даже 4-е место это хорошо. А теперь мало ли как с Приазовьем выйдет. Мы-то еще собрались ехать в Таганрог. В прошлом году вышел жуткий фэйл. 8 задач за 2 часа, но ни одной не прошло в последние три. В итоге ~50 место.
15 лет назад, скрыть # |
 
Проголосовать: нравится -19 Проголосовать: не нравится
Я один из авторов контеста.

Во-первых, прошу прощения за технические проблемы во время соревнования: ошибку в условии B, пересуживание по I и J из-за текстовых правок в тестах, общее пересуживание из-за неправильно выставленных TimeLimit-ов. Мне видятся в них две основные причины: доделывание контеста в последний момент и недостаток общий координации. Конечно, есть и чисто технические моменты, но без этих причин большинства проблем, скорее всего, удалось бы избежать. Допущенные ошибки обязательно будут учтены при подготовке следующего чемпионата СПбГУ, который ориентировочно состоится в октябре.

По поводу претензий по задачам выскажу своё мнение.

1. В задаче F, действительно, условие хорошо было бы изначально сделать чётче. Тем не менее, ответы на стандартные вопросы прямо или косвенно следовали из условия. В каком порядке записаны биты — объяснено подробно. Является ли граф ориентированным — нет, иначе как он может быть задан половиной матрицы смежности. Может ли человек быть “другом” самому себе — да, ведь бит для этого есть, и в условии подчёркивается, что отношение “дружбы” — формальное понятие. Можно ли считать, что два одинаковых человека образуют пару — да, потому что не сказано, что они должны быть различны. Примерно этим руководствовалось жюри в своих ответах “без комментариев”.

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

2. Общая претензия по тому, что решения с правильной асимптотикой не проходят из-за Time Limit. Одна из причин — то, что авторы чемпионата СПбГУ обычно пишут решения довольно оптимально. Считаю, что это не то чтобы хорошо или плохо — так есть, это специфика чемпионата, почему бы и нет.

Вообще, ограничения по времени выставляются исходя из того, чтобы решения жюри укладывались в них с двухкратным запасом. Это было неверно локально (не в Кубке, а в чемпионате СПбГУ) в задаче H, где решение жюри работало 1.5 секунды из 2. К моменту, когда мы это заметили, случилось уже много попыток по этой задаче, успешные среди них тоже были, и, опять же, менять ограничения было бы нечестно по отношению к тем, кто уже потратил время на оптимизацию и сдал задачу только после этого.

3. Окончания числительных в задаче J. Тут, во-первых, замечу, что английский — основной язык соревнований ACM ICPC, начиная с четвертьфиналов. Поскольку чемпионат СПбГУ (как и этап Кубка) — это соревнование в формате ACM ICPC, считается, что этот язык достаточно важен. Во-вторых, английский в качестве иностранного изучает подавляющее большинство школьников и студентов. Словом, если в команде из трёх человек нет ни одного, кто бы считал, что с числительными “elevenst”, “twelvend” и “[one hundred] thirteenrd” что-то не так — это достаточное основание для того, чтобы получить по задаче минус и задуматься об этом. Программирование тут, действительно, ни при чём. Но с таким знанием английского в англоязычном условии команда вполне может понять какое-нибудь слово неверно (реальный пример: что такое unidirectional edges?) и из-за этого решать не ту задачу. И программирование тоже будет ни при чём.

Замечу, что некоторые из тех, кто искал проблему в написании числительных, на самом деле выдавали неправильный ответ на тест n = 4.

4. Вообще вывод текста, не несущего информации. Действительно, это сделано с задумкой “как на финале”, там в некоторых задачах приходится выводить не только ответ, но и несколько слов, пробелов и переводов строки, не являющихся необходимыми. Действительно, реализация этой идеи не всегда соответствует задумке (предложения получаются не на английском). На финале также бывает, что форма слова не изменяется из-за стоящего рядом числительного. Не считаю, что такой формат вывода особенно хорош или плох. Он просто бывает, также как и формат, состоящий только из чисел.
  • 15 лет назад, скрыть # ^ |
    Rev. 3  
    Проголосовать: нравится +21 Проголосовать: не нравится
    1,3. Как мне кажется, если уж вы даете такую задачу, в которой есть какие-то неоднозначности в условии, или какие-то хитрые случаи в задаче никак не связанные с идеей решения, то нужно давать на это семплы. Это в частности касается задачи J и F. Почему просто нельзя было в задаче J дать семплы со всеми возможными случаями написания окончаний, по моему это было бы очень демократично по отношению ко всем участникам. И тоже самое в задаче F. 

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

    Я считаю, что если среди 100 команд хотя бы 20 команд не могли сдать асимптотически правильное решение или не поняли условие, то в таком случае задача плохая, и авторы её недоделали. 

    И еще, раз вы говорите, что "авторы чемпионата СПбГУ обычно пишут решения довольно оптимально", почему тогда не сделать ограничения 3x от авторов или даже 4x, если кто-то и упихает палево, ничего плохого не произойдет, а вот если у 20-30 команд не пройдет совершенно правильное решение, плохое точно случится, как например в этот раз. 
    • 15 лет назад, скрыть # ^ |
       
      Проголосовать: нравится 0 Проголосовать: не нравится
      Да, условия можно было сделать лучше.

      Тем не менее, мне кажется, что у условия F, если его внимательно прочитатьтолько одно правильное понимание. Поэтому, если сделать объявление с пояснениями — это нечестно по отношению к командам, которые уже потратили время и отнеслись к условию внимательно.

      Тут вопрос, что ценить больше
      — удобство контеста или внимание участников. В этом случае я пока склоняюсь ко второму.
      • 15 лет назад, скрыть # ^ |
         
        Проголосовать: нравится +26 Проголосовать: не нравится
        Понимание в F действительно одно, а вот авторское решение неверное. В данной задаче под парой человек понимается два человека. Так что надо было не объявление делать, а править решение жюри, чекер и делать реджадж. Ну или более щадящий вариант для участников - поправить только чекер, чтобы он допускал верное понимание и альтернативное (в котором пара может сосоять из одного человека).
      • 15 лет назад, скрыть # ^ |
         
        Проголосовать: нравится +5 Проголосовать: не нравится
        По поводу F. Цитата из условия: "Чтобы воспроизвести некую ошибку, вам необходимо найти пару человек, у которых нет общих друзей".
        Во-первых, я не представляю "пару человек" из одного и того же человека. А вы? :-)
        Во-вторых, лично я при написании условия придерживаюсь правила: если легенда не подходит к сути задачи, то надо придумать другую легенду (или вообще без легенды обойтись). Просто "дружбу" из условия русским (и английским) словом "дружба" назвать нельзя.


        • 15 лет назад, скрыть # ^ |
           
          Проголосовать: нравится -8 Проголосовать: не нравится
          Ну, я представляю пару человек из одного и того же человека. Видимо, я слишком долго учился математике. (Психиатра прошу не предлагать!)

          А насчёт легенды — поскольку некоторые члены жюри действительно работают ВКонтакте, возможно, они знают, о чём говорят.
      • 15 лет назад, скрыть # ^ |
        Rev. 2  
        Проголосовать: нравится +5 Проголосовать: не нравится
        Нееееееет там много пониманий))
    • 15 лет назад, скрыть # ^ |
       
      Проголосовать: нравится 0 Проголосовать: не нравится
      Не согласен, что “асимптотически правильные решения” = “правильные решения”.

      В чемпионатах СПбГУ традиционно есть задачи на оптимизацию, в которых нужно не только придумать решение с правильной асимптотикой, но и реализовать его достаточно оптимально. Да и в других контестах это бывает часто. Считаю, что такие задачи имеют право на существование.
      • 15 лет назад, скрыть # ^ |
         
        Проголосовать: нравится +4 Проголосовать: не нравится
        Никогда не понимал этого. Всегда вместо "реализовать оптимально" получается запихать. Приходится ногами и руками пропихивать правильное решение.
        • 15 лет назад, скрыть # ^ |
           
          Проголосовать: нравится 0 Проголосовать: не нравится
          А иногда и не очень правильное))
        • 15 лет назад, скрыть # ^ |
           
          Проголосовать: нравится 0 Проголосовать: не нравится
          Задумка тут такая.

          Если команда A умеет придумывать максимальный тест и мерить на нём время работы, она не получит лишний минус, а сразу поймёт, что нужно оптимизировать. Если команда B что-то из этого не умеет, она получает лишнее штрафное время, послав неоптимальное решение. Логично, ведь B по этому показателю хуже A.

          Далее, если команда C умеет находить наиболее трудоёмкие места в своём решении и оптимизировать программу именно в них, она сделает это и сдаст задачу достаточно быстро. Если команда D этого не умеет, она может сдать задачу “пропихиванием” — например, перебирая замены одних типов данных на другие, меняя eps, переставляя местами условия в ифах и циклы. Но обычно команда D тратит на это гораздо больше реального времени и штрафных попыток, чем команда C. Ну и опять же логично, ведь C по этому показателю хуже, чем D.

          То есть чем лучше команда понимает, что происходит, тем больше метод тыка (“пропихивание”?) превращается в методичную оптимизацию, и тем лучше у команды результат по задаче (реальное время, количество попыток). Я считаю, что это нормально.

          Конечно, это всё работает “в среднем”: какой-то команде может повезти, и она, не понимая этого, сразу напишет правильное решение, а другая соптимизирует лучше, чем нужно, а потом окажется, что на самом деле программа просто виснет на неучтённом крайнем случае. Ну так и при придумывании асимптотически правильного решения, реализации и отладке такие случайности тоже бывают.
          • 15 лет назад, скрыть # ^ |
             
            Проголосовать: нравится +11 Проголосовать: не нравится
            Поиск узких мест к сожалению очень часто превращается в гадание - на серверах Олега размер процессорного кеша и разрядность процессора отличаются от того, что на машинах участников, поэтому часто приходится оптимизировать непонятно что в программе, которая работает 0.3 секунды на макстесте (например, у нас после rejudge на этом кубке упала G, хотя на макстесте работала меньше секунды).
          • 15 лет назад, скрыть # ^ |
             
            Проголосовать: нравится +8 Проголосовать: не нравится
            Вот только недавно встретился с проблемой - у меня профайлинг в программе показывал, что 90% времени процессор проводил в флойде-воршолле, соотвественно - оптимазил его. Оказалось, что это потому, что у меня весь массив не помещался в кеш - на сервере он помещался и там были тормоза совершенно в другом месте. Соответственно дома та программа работала 5 секунд, а на работе - 3 минуты. При том что на работе тактовая частота процессора даже выше. И это я молчу про разницу в языках программирования...
          • 15 лет назад, скрыть # ^ |
             
            Проголосовать: нравится 0 Проголосовать: не нравится
            Чтобы избежать гадания о разнице между компьютерами, можно использовать страницу, где указаны параметры сервера, а также пробный тур.
            • 15 лет назад, скрыть # ^ |
               
              Проголосовать: нравится +14 Проголосовать: не нравится

              Представляю, как на пробном туре команда решает 3 задачи:

              Задача A) Определить размер кэша процессора.

              Задача B) Определить тактовую частоту процессора.

              Задача C) Определить, какая именно модель процессора используется на тестирующем сервере.

              Потом на основании этих данных рассчитывает магические константы, которые надо будет использовать в решениях задач основного тура :)

              • 15 лет назад, скрыть # ^ |
                Rev. 2  
                Проголосовать: нравится 0 Проголосовать: не нравится
                Нечто подобное было в 2003 году на олимпиаде в Вологде. См. третью задачу пробного тура :)

                Причем задача специально давалась, чтобы участники могли примерно понять насколько их локальный компьютер быстрее или медленнее проверяющего.
              • 15 лет назад, скрыть # ^ |
                 
                Проголосовать: нравится 0 Проголосовать: не нравится
                Кстати, было бы неплохо.

                Когда я ещё участвовал в ACM ICPC, мы на пробном туре посылали Флойда, чтобы узнать, на скольки вершинах он ещё укладывается в две секунды. Как примерная оценка того, насколько проверяющий компьютер быстрее или медленнее локального — вполне работает.

                С кэшом не заморачивались, всё равно не умели пользоваться.
      • 15 лет назад, скрыть # ^ |
         
        Проголосовать: нравится 0 Проголосовать: не нравится
        Не понимаю причем тут оптимизация (про Н), жюри согласно правилом должно было выставить ТЛ 3 секунды (ты сам это признаешь). А в 3 секунды оптимизить эту задачу врятли бы пришлось, только если избранным
        • 15 лет назад, скрыть # ^ |
           
          Проголосовать: нравится -8 Проголосовать: не нравится
          Нет, на сервере Открытого Кубка решение жюри работает 1.053 sec, две выставить вполне нормально. Это на питерском тестирующем компьютере оно работает полторы секунды.
  • 15 лет назад, скрыть # ^ |
     
    Проголосовать: нравится +17 Проголосовать: не нравится

    Даже тот факт, что ни одна команда (из ~50 решивших) не сдала задачу F ни с первой, ни со второй попытки, говорит о проблемах с условием.

    Мы, например, только после конца контеста узнали, что от матрицы смежности на самом деле дана нижняя половина, это легко было не заметить. А какая логика в дружбе человека с самим собой – до сих пор не понимаем, хотя задачу на контесте сдали :)

    • 15 лет назад, скрыть # ^ |
      Rev. 2  
      Проголосовать: нравится +5 Проголосовать: не нравится
      Ну про нижнию половину еще можно согласиться, так как там написано, что в i-й строке дано i бит, а в семплах все по одной букве из-за дополнения до 6-ти бит.
      Вообще вот тут стоило дать семл из 7-ми вершин, тогда один момент сразу бы прояснился. 
      По поводу "нигде не встречается слово различных" и "дружбы человека с собой".
      Если вы так формально подходите к условию, то не делайте сказочку вообще.
      Условие "Дан неориентированный граф. Найти две вершины(возможно совпадающие), такие, что между ними не существует пути длинны ровно 2 ребра. В графе могут быть петли" было бы тогда идеальным.

      P.S.
      Еще вспомнилась задача с ОпенКапа не помню какого и когда:
      K. Фантазия
      Имя входного файла k.in
      Имя выходного файла k.out
      Ограничение по времени 2 секунды
      Ограничения по памятие 64 мегабайта
      Кончилась.
      Формат входных данных
      В первой строке даны 2 числа:n и m (0 < n,m < 100500).
      Формат выходных данных
      В единственной строке выходного файлы выведите значение такого-то выражения
    • 15 лет назад, скрыть # ^ |
       
      Проголосовать: нравится 0 Проголосовать: не нравится
      Да, это действительно показатель того, что что-то не так. Обычно находятся команды, которые сдают задачу не сразу, видят монитор по ней и усиливают внимание. Если даже у них не получилось сдать с чистого плюса, дело всё-таки скорее всего в условии.

      А вот скажи, пожалуйста, как координатор CodeForces по задачам:

      1. Ты бы объявил по F и про то, что человек может быть другом самому себе, и про то, что люди в паре могут совпадать, так?

      2. Считаешь ли ты, что из условия эти два пункта не следуют ни прямо, ни косвенно?

      3. Как быть с тем, что команды, сдавшие задачу до объявления, потратили на неё больше ресурсов? Это неважно по сравнению с тем, насколько непонятно было условие?
      • 15 лет назад, скрыть # ^ |
         
        Проголосовать: нравится +20 Проголосовать: не нравится
        1. Да. Мы, бывало, и менее важные вещи объявляли.

        2. Конечно, по условию это не запрещается. Но часто в задачах с неформальными условиями, где многое четко не прописано, не бывает неестественных случаев в тестах.

        3. Такое уже было на Open Cup. Те, кто сдавали до клары и тратили на это много попыток, писали апелляции, и им снимали попытки.

        • 15 лет назад, скрыть # ^ |
           
          Проголосовать: нравится 0 Проголосовать: не нравится
          3. Попытки можно компенсировать, но есть же ещё реальное время, потраченное на задачу.

          Если считать, что условие неоднозначно (или однозначно, но не соответствует тестам жюри) — конечно, я согласен, что нужно объявлять и снимать попытки (самим или по апелляциям), это минимизирует неравенство условий для команд.

          Если же считать, что условие сложно понять, но при этом оно однозначное — объявление помогает всем, кроме тех команд, которые уже сдали задачу. Считаешь ли ты это достаточным основанием, чтобы не делать объявление, и почему?
          • 15 лет назад, скрыть # ^ |
            Rev. 3  
            Проголосовать: нравится +8 Проголосовать: не нравится
            Считаю, что если с условием есть проблемы, то объявление обязательно нужно делать. У нас же соревнование по программированию, а не по угадыванию условий.

            Вообще, любое объявление на любом контесте помогает всем, кроме тех команд, которые уже сдали задачу. Значит, давайте вообще не будем делать объявления - тогда все будут в абсолютно равных условиях :-)
  • 15 лет назад, скрыть # ^ |
    Rev. 2  
    Проголосовать: нравится 0 Проголосовать: не нравится
    А какая была ошибка в условии В ? Она и сейчас в http://158.250.33.215/~ejudge/files/opencup/oc9/gp5/exuralsel-r.pdf  присутствует ? 
    • 15 лет назад, скрыть # ^ |
       
      Проголосовать: нравится 0 Проголосовать: не нравится
      Да. Там в формальном определении написано, что король может ходить только по восьми диагоналям. На самом деле король может ходить во все 26 соседних клеток, а формальное определение противоречит второму примеру в условии. Объявление об этом было, но довольно поздно.
      • 15 лет назад, скрыть # ^ |
        Rev. 3  
        Проголосовать: нравится 0 Проголосовать: не нравится
        Как сказал Гена: "я знаю как эту задачу писать, но не представляю как её можно отладить". Так и получилось: кодил, кодил, а тест из условия так и не пропихнул (получалось 4 хода, вместо 3-х). Отсылки - это уже были вариации на тему "а может я не так условие понял".
        Даже любопытно, как жюри удалось отладить свои решения. Неужели путем визуализации тороидальной трехмерной шахматной доски?  =)
  • 15 лет назад, скрыть # ^ |
     
    Проголосовать: нравится +5 Проголосовать: не нравится
    Представьте, что вы сами пишете этот контест...

    разумеется, у вас ничего не проходит с первой попытки, ибо в ТЛ нужно еще затолкать. Вы не понимаете, какая логика была у авторов задачи, и почему у вас ВА. И поэтому вы шлете все подряд - эдакий перебор по условию, потому что вдруг авторам взбрело в голову сделать так, а не по другому. Потом у вас посередине контеста отбирают ОК по задачам, а условия вы уже выкинули. А еще вам надо вывести на китайском языке предложение, но вы не можете вспомнить правил китайского языка, а в условии или семплах нет объяснения. А потом авторы вам скажут, что вы обязаны знать китайский, потому что это язык половины населения нашей планеты.

    ... некрасиво, не правда ли?
  • 15 лет назад, скрыть # ^ |
     
    Проголосовать: нравится 0 Проголосовать: не нравится
    Легенда в задаче F нормальная: многие социальные сети позволяют добавить самого себя в качестве френда (ЖЖ, например), это даже отображается как взаимная дружба. Но почему пара в ответе может состоять из одинаковых номеров? Нам это вообще в голову не приходило, а правильный вариант решения, в котором это возможно, отправили по случайности. Цитата из условия:

    «вам необходимо найти пару человек, у которых нет общих друзей»

    Слово «человек» без всяких кавычек, про формальность понятия «друг» говорится, а про понятие «человек» — нет. Если автор задачи считает, что пара реальных людей может состоять из одного человека, то пусть он обратиться к помощи психиатрии. Дальше:

    «выведите пару порядковых номеров пользователей, не имеющих общих «друзей»

    К какому слову относится причастный оборот? Если к слову «номеров», то где в условии сказано о «дружбе номеров»? Если к слову «пользователей», то любой человек, понимающий по-русски, поймет это так: нужна пара номеров двух различных пользователей — потому что слово «пользователь» во множественном числе, и автор задачи не может игнорировать этот факт.
    • 15 лет назад, скрыть # ^ |
      Rev. 2  
      Проголосовать: нравится +4 Проголосовать: не нравится
      Авторы извинились, ошибки признали (не ошибается тот, кто не работает), контест признан нерейтинговым (чему не все рады). Что уж так кулаками после драки размахивать, авторов к психиатору отправлять ?
      Некрасиво, по-моему...
      • 15 лет назад, скрыть # ^ |
         
        Проголосовать: нравится 0 Проголосовать: не нравится
        Только если считает. Если не считает, то пусть ничего не делает. Никого конкретно я не отправлял, потому что я не знаю, кто автор именно этой задачи.

        Гасса заявил, что с условием этой задачи все в порядке (это признание ошибки?), я сказал, что это не так, вот и всё.
        • 15 лет назад, скрыть # ^ |
           
          Проголосовать: нравится 0 Проголосовать: не нравится
          Гасса заявил: "В задаче F, действительно, условие хорошо было бы изначально сделать чётче", "два последних момента действительно лучше бы пояснить в условии заранее"
          • 15 лет назад, скрыть # ^ |
             
            Проголосовать: нравится 0 Проголосовать: не нравится
            «Тем не менее, ответы на стандартные вопросы прямо или косвенно следовали из условия.»

            «Можно ли считать, что два одинаковых человека образуют пару — да, потому что не сказано, что они должны быть различны.» (вот это мне не нравится особенно)

            «Примерно этим руководствовалось жюри в своих ответах “без комментариев”.»
            • 15 лет назад, скрыть # ^ |
               
              Проголосовать: нравится 0 Проголосовать: не нравится
              В общем, как давно известно, один и тот же текст люди могут воспринять совершенно по разному. Это и к "обратиться к помощи психиатрии" тоже относится. 
              • 15 лет назад, скрыть # ^ |
                 
                Проголосовать: нравится 0 Проголосовать: не нравится
                В комментариях повыше написано так:

                У меня есть одно объяснение случаю вида "человек не дружит сам с собой" - это авторы на самом деле не дружат с некоторыми своими частями тела, особенно где шапка расположена.

                Авторам голову надо оторвать. Зла не хватает.

                Неужели я написал еще хуже?

                По поводу пояснения по задаче F от Гассы. Структура того абзаца примерно такая: «конечно, хорошо бы написать подробнее, мы согласны, но это не необходимо, потому что и так можно догадаться (что равносильно заявлению «условие корректно и однозначно».)
                • 15 лет назад, скрыть # ^ |
                   
                  Проголосовать: нравится +3 Проголосовать: не нравится
                  У меня еще написано про "кулаками после драки размахивать".
                  Ночь прошла, эмоции, вроде, должны были поулечься.
                  Мы теперь добиваемся, чтобы авторы окончательно раскаялись, публично посыпали голову пеплом, повторно обещали учесть все ошибки, поклялись, что "никогда больше" и т.п. ? Вопрос риторический. 
                  • 15 лет назад, скрыть # ^ |
                     
                    Проголосовать: нравится 0 Проголосовать: не нравится
                    Нет. Мы хотим чтобы авторы поняли, что ошибки были не только до контеста, но и во время - пересуживания акспетедов и ответы No comments
      • 15 лет назад, скрыть # ^ |
         
        Проголосовать: нравится 0 Проголосовать: не нравится
        Не очень красиво согласен.. Но я видел скоко было эмоций у московских команд во время соревнования (я про все команды а не только свою), и вбольшинстве отрицательные.. Хотя я каждый раз когда заходила задача радовался сильнее чем на "обычных" контестах - это означало что я наконец понял что имели в виду авторы, но отрицательных эмоций хватило с лихвой
  • 15 лет назад, скрыть # ^ |
     
    Проголосовать: нравится +5 Проголосовать: не нравится
    Может ли в графе быть петля - нет, т.к. это не обговорено в условии, а википедия говорит, что в большинстве случаев графом называется объект без петель. Я правильно понял, как именно ответы на стандартные вопросы прямо или косвенно следуют из условия?
    • 15 лет назад, скрыть # ^ |
       
      Проголосовать: нравится 0 Проголосовать: не нравится
      На "Википедию" официально ссылаться неприлично. А в идеале так вообще условия должны быть сформулированы так, чтобы задачу мог решить человек, не знакомый с такими техническими терминами как граф.
      • 15 лет назад, скрыть # ^ |
        Rev. 2  
        Проголосовать: нравится +1 Проголосовать: не нравится
        Так этого термина и не было в условии)
        • 15 лет назад, скрыть # ^ |
           
          Проголосовать: нравится +7 Проголосовать: не нравится
          Вы бы хоть почитали условие перед отправкой:
          english: The following n lines contain encoded graph ...
          russian: Следующие n строк содержат закодированный граф ...
          • 15 лет назад, скрыть # ^ |
            Rev. 2  
            Проголосовать: нравится 0 Проголосовать: не нравится
            Судя по плюсам, условия не читало как минимум трое человек :)
            Могу рассказать ужастик в тему: если бы в своё время хотя бы один из троих человек в моей команде прочитал первое предложение в условии одной задачи, мы бы сейчас, скорее всего, готовились ехать на финал. Но, в самом деле, кто же читает первое предложение?..
    • 15 лет назад, скрыть # ^ |
       
      Проголосовать: нравится 0 Проголосовать: не нравится
      Нет. Использованное умолчание: если не сказано, что чего-то не бывает, то это бывает.

      В математике пара, состоящая из двух одинаковых объектов — вполне разумное понятие. Это же не множество. Точно так же, как “несколько” в олимпиадных задачах не значит “хотя бы два”.
      • 15 лет назад, скрыть # ^ |
         
        Проголосовать: нравится +2 Проголосовать: не нравится
        Ну, в задаче F нигде же не сказано, что строка с номер i описывает только первые i бит матрицы смежности. Получается, набор тестов был не полным - должны были быть еще тесты, где есть куча всякой фигни в строке помимо описания графа. Ну это если следовать такому пониманию...
        • 15 лет назад, скрыть # ^ |
           
          Проголосовать: нравится 0 Проголосовать: не нравится
          Нет, это сказано. i-я строка содержит i закодированных бит. Тут не придраться.

          Если ссылаться на математические отпределения, могу предоставить определение графа из учебника, изданного на кафедре дискретной математики КНиИТ СГУ. Там написано, что пара (V, E) с петлями и мультиребрами  - это псевдограф. А вот уже без мультиребер и петель - это граф.

          Понятно, что все определяют по разному, по-этому и принято уточнять есть ли мультиребра и петли, или нет, потому что не везде граф с мультиребрами и петлями вообще считается корректным графом.
          • 15 лет назад, скрыть # ^ |
             
            Проголосовать: нравится +10 Проголосовать: не нравится
            Там не сказано, что она не содержит чего-то еще. А мы же отказались от повседневных значений слов
        • 15 лет назад, скрыть # ^ |
           
          Проголосовать: нравится 0 Проголосовать: не нравится
          Нет, потому что есть другое умолчание, по которому входные данные не содержат ничего, кроме описанного в условии.

          Я и сам бы хотел увидеть эту “развитую систему умолчаний” где-нибудь записанной. Действительно, когда у жюри она n лет одна, а у участников k лет другая, возникают такие проблемы.
          • 15 лет назад, скрыть # ^ |
             
            Проголосовать: нравится +23 Проголосовать: не нравится
            Просто мне вот интересно, не смущает ли организаторов чемпионата СПбГУ, что во всех остальных контестах если есть непонятные моменты в условии их объясняют (вот это чудо не в счет)? Не смущает, что задача F могла быть в такой же формулировке с запретом брать пару (A, A)? И какой вообще смысл давать такие махровые бояны исключительно ради подколок в условии? Вы реально видели задачи такого рода на финале? В таком виде соревнования по программированию превращаются в что-то вроде "Смотрите какие мы крутые, всех участников подкололи". Если задачи готовятся в последний момент и приходится давать бояны - ну хорошо, дайте их в нормальном виде. От того, что люди потратят на боян час из-за непоняток в условии или незнания английского языка (кстати, согласно правилам кубка его знать вовсе не обязательно) кому то станет лучше? Для подготовки к выводу на финале есть тренировки. Для всяких приколов есть специальные контесты. Ну вы еще дали бы задачу про сумму квадратов, ага
  • 15 лет назад, скрыть # ^ |
     
    Проголосовать: нравится +5 Проголосовать: не нравится
    То есть пересуживание аксептеда не смущает, а вот обидеть бедных людей, которые, в большинстве своем, перебором сами догадались и потратили время - это ни-ни?
    • 15 лет назад, скрыть # ^ |
       
      Проголосовать: нравится 0 Проголосовать: не нравится
      Пересуживание аксептеда смущает, из-за этого раунд нерейтинговый.

      К формулировке задачи F это не имеет отношения.
  • 15 лет назад, скрыть # ^ |
     
    Проголосовать: нравится +12 Проголосовать: не нравится
    3. Безусловно, "английский — основной язык соревнований ACM ICPC".  А основной язык Открытого Кубка - русский. Не все команды, участвующие в Кубке, участвуют также в ACM ICPC и усиленно изучают английский. На чемпионате СПбГУ делайте, что хотите. Но если ваш контест - этап Кубка, дополнительно позаботьтесь об остальных участниках.

    P.S. У моей команды с J благодаря хорошему знанию английского проблем не было, однако вполне понимаю жалобы тех, у кого они были.
    • 15 лет назад, скрыть # ^ |
       
      Проголосовать: нравится 0 Проголосовать: не нравится
      Кстати, а как об этом узнать? В единственной странице правил, где упоминается русский язык, он оба раза упоминается вместе с английским.
      • 15 лет назад, скрыть # ^ |
         
        Проголосовать: нравится 0 Проголосовать: не нравится
        Вероятно, об этом можно сделать вывод из того, что страница правил существует только на русском языке (поправьте, если я неправа).
        • 15 лет назад, скрыть # ^ |
           
          Проголосовать: нравится 0 Проголосовать: не нравится
          Снарк вот говорит, что официальных языка два. И это действительно означает, что команда имеет право знать только один из них. А в секторах, где команды англоязычные, русский язык (чтобы объяснить правила) знают координаторы.

          Согласен, претензия к условию J и последующим “no comments” — по делу.
15 лет назад, скрыть # |
 
Проголосовать: нравится +4 Проголосовать: не нравится
Мда, судя по обсуждению, контест был просто шикарен. Как я рад, что забил на него и вместо этого пошёл на концерт "Эпидемии" =)
15 лет назад, скрыть # |
 
Проголосовать: нравится 0 Проголосовать: не нравится
Где можно скачать условия? А то на сайте ссыль не работает
15 лет назад, скрыть # |
 
Проголосовать: нравится +31 Проголосовать: не нравится
Каждый тест начинается строкой с единственным числом n (1 <= 8000), определяющим количество списков.

По-моему, приведенный в условии задачи H (и в русской, и в английской версиях условий) факт, просто прекрасен своей неоспоримой очевидностью.
К счастью, необычность задания этого ограничения большинством участников просто игнорируется, все курят^Wвидят то, что и предполагали авторы :)
  • 15 лет назад, скрыть # ^ |
     
    Проголосовать: нравится +1 Проголосовать: не нравится
    Да, мы тоже это заметили где-то в середине контеста. Объявления не было потому, что и формально дальше есть ограничения, из которых следует в точности 1 <= n <= 8000, и неформально понятно, что имелось в виду. Объявлять это — неоправданная трата времени участников, примерно как объявлять об опечатке, не мешающей понять смысл.
15 лет назад, скрыть # |
 
Проголосовать: нравится 0 Проголосовать: не нравится

Есть ли какая-то возможность скачать сабмиты, отправиленные на туре? Разумеется, нашей команды, хотя если можно посмотреть других - было бы вообще замечательно. Я склоняюсь к ответу "нет", т.к. не могу найти ссылку на вход именно в контест (который давно over, но есть вкладка "отправки"). Может, у кого-то в кэше?

Вообще наличие такой возможности было бы очень полезно, т.к. в идеале на месте написания должен отсутствовать интернет (блокироваться трафик на иные адреса) и возможность считывать флеш. Хотя на практике, на мой взгляд, выполняется это редко. Я, например, просто забыл переписать :(

15 лет назад, скрыть # |
 
Проголосовать: нравится +11 Проголосовать: не нравится
Хотел бы все-таки вернуться к задаче В. По условию N<=4, для N<=3 все очевидно, при N=4 все тесты делятся на тривиальные и непонятные. То есть решение невозможно проверить, например, тестами меньшей размерности, перебором и т.п.
Вопрос: чем тогда доказывается правильность ответа на тест из условия? Авторским решением? А правильность авторского решения?
Не то, чтобы я ставил под сомнение авторское решение, но обычно так не бывает.
Конечно, не надо засвечивать идею по нерешенной задаче, но действительно есть какое-то доказательство правильности авторского решения?  

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

    Там же можно просто граф игры построить и по нему всё посчитать.

    Тогда всё доказательство правильности заключается в том, что возможные ходы, описанные в условии, совпадают с теми ходами, которые делаются в решении.

    Разве не так?

    • 15 лет назад, скрыть # ^ |
       
      Проголосовать: нравится 0 Проголосовать: не нравится
      Так в том и проблема, что НЕ просто граф этой игры построить. Гена для этого написал кучу кода, сжал граф до 17 с чем-то тысяч вершин, и в итоге получил WA.

      Накосячил, так накосячил. Смущает только, что правильность любого решения по этой задаче можно показать только на элементарных тестах, где ответ = 1. А для всех остальных тестов только поверить, что ответ - верный.
      Хотя, может быть, с этим утверждением я ошибаюсь. 

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

        Хмм. Я написал для интереса решение задачи B.

        Оно у меня тоже выдаёт 4 хода на сэмпл..


        • 15 лет назад, скрыть # ^ |
          Rev. 3  
          Проголосовать: нравится +3 Проголосовать: не нравится
          Хотя, т.к. ошибка почти наверняка в сжатии графа, то потестировать это можно. Берем произвольную позицию на исходной доске, делаем все (<= 130) возможные ходы. Отображаем исходную и производные позиции на сжатый граф. Там производные позиции тоже должны быть соседями исходной, и других соседей быть не должно.
          Как нюанс, надо рассматривать раздельно позицию при ходе белых и черных.
          Интересно, я прав?
  • 15 лет назад, скрыть # ^ |
     
    Проголосовать: нравится 0 Проголосовать: не нравится
    > Вопрос: чем тогда доказывается правильность ответа на тест из условия?
    Честно говоря, я не знаю.

    Насколько можно понять из каталога с задачей, ответы могли быть проверены при помощи brute force solution. Действительно, если чёрные выигрывают за три хода, то, вероятно, перебор с тривиальными отсечениями работает не очень долго. И написать его не очень сложно.