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

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

Сегодня, в 14:00 (MSK) состоится третья командная интернет олимпиада на http://neerc.ifmo.ru/school/.


По решению жюри, команды, прошедшие на ВКОШП, имеют право участвовать в усложненной номинации, даже если по правилам они должны были участвовать в базовой.

Предлагаю после окончания олимпиады в усложненной номинации (после 19:00 (MSK)) обсудить здесь задачи.
  • Проголосовать: нравится
  • -5
  • Проголосовать: не нравится

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

Как-то странно, пытаюсь залогиниться в клиенте, мне пишут "Wrong login name or password", хотя и логин, и пароль точно правильные ввожу. Как-то раз такое уже было...Никто не знает причину? Проблема решена

  • 13 лет назад, # ^ |
      Проголосовать: нравится 0 Проголосовать: не нравится
    у меня залогинилось
  • 13 лет назад, # ^ |
    Rev. 2   Проголосовать: нравится 0 Проголосовать: не нравится

    Вроде до олимпиады они не дают войти какое-то время, по-моему, связано с особенностями настройки контестов в PCMS2.


    Это нормально, не волнуйтесь.

    P.S. Я вошел спокойно, хотя  в Messenger'е попытки с прошлой олимпиады.
    • 13 лет назад, # ^ |
      Rev. 2   Проголосовать: нравится 0 Проголосовать: не нравится
      Перезарегался и вошел...Мне кажется, или базовые задачи действительно слишком простые? Командой не могли сегодня писать, поэтому не стал подавать заявку на усложненную номинацию (а стоило, видимо)
13 лет назад, # |
Rev. 2   Проголосовать: нравится +5 Проголосовать: не нравится

Сейчас время 14:05:

1. Задач на сайте нет
2. Но есть уже 1 accepted.

upd: Дайте прямую ссылку на задачи если у кого есть.
13 лет назад, # |
  Проголосовать: нравится +5 Проголосовать: не нравится
Какой-то баг жюри: задачи и результаты с прошлой олимпиады.
13 лет назад, # |
Rev. 2   Проголосовать: нравится -9 Проголосовать: не нравится


13 лет назад, # |
Rev. 2   Проголосовать: нравится -10 Проголосовать: не нравится

Вопрос по задаче C: Почему такие ответы на тесах из условия? (У меня получилось Unique ("aaa") и Impossible соответственно)? Условие несколько раз перечитал и не понял.

  • 13 лет назад, # ^ |
      Проголосовать: нравится 0 Проголосовать: не нравится
    если строка была палиндромом изначально, мы в начало и в конец добавили палиндромы, то получившаяся строка тоже палиндром => дедушка ошибся.
    • 13 лет назад, # ^ |
        Проголосовать: нравится -9 Проголосовать: не нравится
      Что-то до меня не доходит... Я понял так: загадано "aaa", слева дописали 'a': "aaaa" - палиндром, справа дописали 'a': "aaaaa" - тоже палиндром. Другой палиндром загадать невозможно, значит ответ unique. Что здесь не так?
      • 13 лет назад, # ^ |
        Rev. 2   Проголосовать: нравится 0 Проголосовать: не нравится

        В конце не должен получаться палиндром. Т.е. какая не была бы начальная строка, являющаяся палиндромом - в конце дописываний получится палиндром.

      • 13 лет назад, # ^ |
          Проголосовать: нравится 0 Проголосовать: не нравится
        Можно загадать палиндром BBB, CCC, DDD, ..., QQQQ, ...
  • 13 лет назад, # ^ |
      Проголосовать: нравится 0 Проголосовать: не нравится
    В конце не должно быть палиндрома. А если брать ааа, то в результате будет ааааа, что не подходит.
    • 13 лет назад, # ^ |
        Проголосовать: нравится -9 Проголосовать: не нравится
      Всё. Понял, что игра до первого непалиндрома а не определённое кол-во ходов.
13 лет назад, # |
  Проголосовать: нравится 0 Проголосовать: не нравится
Как решать B, E, F?
  • 13 лет назад, # ^ |
      Проголосовать: нравится 0 Проголосовать: не нравится
    B. Понятно, что штаб должен быть центром дерева. Мне сложно строго это доказать, но интуитивно понятно. Ищем центр дерева и проверяем симметрию. Берем два дерева, корнями которых будут соседи центра. Для каждого уровня каждого дерева выпишем все степени вершин и отсортируем их. Проверим на равенство два набора списков. Если равны - ДА, не равны - НЕТ.
  • 13 лет назад, # ^ |
      Проголосовать: нравится 0 Проголосовать: не нравится
    Задача B:
    Я сначала подвесил дерево за вершину, из которой проходит ровно одно ребро. Затем подсчитал cnt[i] - количество вершин в поддереве, вершиной которого является i-я вершина. Нам будет подходить такая вершина x, что кол-во соседей у нее 2(назовем их l и r) и cnt[x] *2+1= n. Таких вершин не более 1. Если мы нашли такую вершину, подвесим дерево за нее. Теперь пересчитаем cnt. Запишем эти значения в два разных массива (если путь от i-й вершины до x-й проходит через l, то в первый массив, иначе во второй). Отсортируем по возрастанию числа в этих массивах. Если массивы совпадают, то YES иначе NO
    • 13 лет назад, # ^ |
      Rev. 2   Проголосовать: нравится 0 Проголосовать: не нравится

      Контртест к обоим этим решениям:

      23

      1 5

      2 6

      3 6

      4 7

      5 8

      6 9

      7 9

      8 10

      9 11

      10 11

      11 12

      23 19

      19 16

      20 17

      21 18

      22 18

      16 14

      17 14

      18 15

      14 13

      15 13

      13 12

      Штаб – вершина 12, с номерами меньше 12 – левая часть, остальные – правая.

      Массивы отсортированных размеров поддеревьев одинаковы для обоих частей, но сами деревья не одинаковы.

      • 13 лет назад, # ^ |
          Проголосовать: нравится +8 Проголосовать: не нравится
        Мы написали хеширование деревьев. Хеш для одной вершины - константа. Для дерева - сортируем хеши всех поддеревьев, которые можно достигнуть по одному ребру, а далее берем какой-нибудь полиномиальный хеш от полученного отсортированного массива. 
        • 13 лет назад, # ^ |
            Проголосовать: нравится 0 Проголосовать: не нравится
          А по какому тогда основанию должен быть полиномиальный хеш?
      • 13 лет назад, # ^ |
        Rev. 2   Проголосовать: нравится 0 Проголосовать: не нравится

        Да, пожалуй, мое решение не верно. Хотя вполне возможно, что оно пройдет этот тест.

        UPD: ан нет. не проходит

      • 13 лет назад, # ^ |
          Проголосовать: нравится 0 Проголосовать: не нравится
        интересно, у гены этот тест пройдет?
    • 13 лет назад, # ^ |
        Проголосовать: нравится 0 Проголосовать: не нравится
      это прошло тесты жюри?
13 лет назад, # |
  Проголосовать: нравится 0 Проголосовать: не нравится
Подскажите кто-нибудь, как решать задачу E(Зарплата) и C(Игра).
  • 13 лет назад, # ^ |
      Проголосовать: нравится 0 Проголосовать: не нравится
    C. Представим нашу строку как граф. Вершины - символы. Ребра между символами будут обозначать равенство этих символов. Забьем начальную строку вопросами. Далее будем добавлять строки, которые говорит девочка. Каждый раз будем проводить ребра 0 --- (n-1) 1 --- (n-2) и так далее. То есть так, чтобы строка становилась палиндромом. Для последней полученной строки не будем этого делать. Когда добавили все строки, запустим дфсы из всех символов, не являющихся вопросами и будем красить всю компоненту связности в нужную букву. Если встретили противоречие, т.е. мы хотим покрасить одну букву в другую - кидаем impossible. Если все хорошо, допишем последнюю строку и проверим, что не получается палиндрома. Если получается - impossible. Иначе, если есть вопросы, то ambiguous, нет - unique.
  • 13 лет назад, # ^ |
      Проголосовать: нравится 0 Проголосовать: не нравится
    В задаче Е достаточно заметить, что все кубы будут не длиннее 54 знаков (на самом деле даже 49), а дальше просто искать первый и последний куб данной длины. Первый куб данной длины можно найти из последнего куба предыдущей, а последний, например, бинарным поиском. Потом необходимо определить, к кубу какой длины относится позиция k и вывести нужную цифру нужного куба. В этом решении нужна длинная арифметика.
    • 13 лет назад, # ^ |
      Rev. 2   Проголосовать: нравится 0 Проголосовать: не нравится

      а без длинки нельзя? вы же пишите: все кубы будут не длиннее 54 знаков, зачем длинка?

      P.S. я ебнулся я ошибся((( у меня 54 ассецировалось со степенью(то есть я подумал 2^54, думаю, че такого, long long и 63 держит) =)

13 лет назад, # |
  Проголосовать: нравится +3 Проголосовать: не нравится
А кто как решал H? Я возводил матрицу смежности в степень k. За n^3*logk/64. Я почти уверен, что есть решение попроще и побыстрее.
  • 13 лет назад, # ^ |
      Проголосовать: нравится 0 Проголосовать: не нравится
    Там обыкновенный бфс по состояниям.
  • 13 лет назад, # ^ |
      Проголосовать: нравится +5 Проголосовать: не нравится
    Построим граф. Вершинами будут состояния(i,0) и (i,1) для всех i от 1 до n, ребрами будут переходы из (u[i],k)в (v[i],1-k),где k=0,1; i от 1 до m. Запустим на этом графе BFS. Тогда дедушка Марат мог остановиться в i-м доме, если кратчайшее расстояние от (1,0) до (i,k mod 2) не превосходит k. Это вроде работает(ну у меня точно).
13 лет назад, # |
  Проголосовать: нравится 0 Проголосовать: не нравится
Как F решать?
  • 13 лет назад, # ^ |
      Проголосовать: нравится 0 Проголосовать: не нравится
    Идея состоит в том, что при повороте плоскости на 45 гр. против часовой стрелки и домножении координат точек на sqrt(2) мы приходим к ситуации, когда часовые стоят в точках (х-у;х+у) и освещают часть плоскости, границы которой параллельны осям координат. То есть если направление 'N', фонарик освещает всех часовых с x<=x',>=y'. Если 'E', то x>=x', y>= y' и так далее. 
    Приходим к задаче, когда нам надо уметь отвечать на запросы offline типа "все точки, у которых x<=(>=)x' и y<=(>=)y'  ". Такое я делал с помощью дерева отрезков. 
13 лет назад, # |
  Проголосовать: нравится 0 Проголосовать: не нравится
Нет, ну, задача про зарплату доставила, простая ужасно, но, тем не менее, минут 20 не могли найти ошибку, а ошибка, похоже распространенная, в том, что номера месяцев не в интервале [1..12], а просто увеличиваются на 1 каждый новый месяц :\
  • 13 лет назад, # ^ |
      Проголосовать: нравится 0 Проголосовать: не нравится
    В том то и вопрос, что строка может состоять из большого количества символов :). Я так думаю, что здесь - закономерность. Подскажите, пожалуйста, как решается эта задача. 
    • 13 лет назад, # ^ |
        Проголосовать: нравится 0 Проголосовать: не нравится
      Там не закономерность. Если вкратце, перебираем сколько цифр будет в кубе очередного числа, там не больше 60 цифр. Потом дихотомией подбираем минимальное и максимальное число с таким числом цифр в своем кубе. Потом, зная это можно определить что число имеет больше цифр чем мы пытаемся подобрать сейчас или что кубу какого числа принадлежит k-й символ.
13 лет назад, # |
  Проголосовать: нравится 0 Проголосовать: не нравится
мы одни такие извращенцы написали в А 31 иф? и вообще как ее надо было по умному решать?
  • 13 лет назад, # ^ |
      Проголосовать: нравится 0 Проголосовать: не нравится
    сделал map <string, int> , где от мелкого сочетания хранили номер русской буквы. брали строку и переделывали ее в вектор intов с помощью этого map
  • 13 лет назад, # ^ |
      Проголосовать: нравится 0 Проголосовать: не нравится
    Я тоже так сделал :)
  • 13 лет назад, # ^ |
      Проголосовать: нравится 0 Проголосовать: не нравится
    Два массива строк :\
    Здесь как не делай, все равно жестоко получается.
13 лет назад, # |
  Проголосовать: нравится 0 Проголосовать: не нравится
Может кто-нибудь рассказать условие задачи I? У нас было три трактовки, ни одна не подходила под пример.
  • 13 лет назад, # ^ |
      Проголосовать: нравится 0 Проголосовать: не нравится
    У Гены спроси, сомневаюсь, что кто-то понял, кроме него, раз больше никто не сдавал :\
  • 13 лет назад, # ^ |
      Проголосовать: нравится +8 Проголосовать: не нравится
    Если оригинал, то:
    Сколько способов представить n = a1 xor a2 xor ... xor ak, ai <= k.
    В условии, к сожалению, введено понятие отрезка, которое все запутало.
    Как сдал Гена - непонятно:)
    • 13 лет назад, # ^ |
        Проголосовать: нравится 0 Проголосовать: не нравится
      "Умение думать, как жюри и догадываться, что оно имело ввиду, иногда очень полезно. Мы так несколько задач сдали" (c)
    • 13 лет назад, # ^ |
        Проголосовать: нравится 0 Проголосовать: не нравится
      То-есть отрезок это префикс, в котором вместо нескольких последних цифр нули?
      • 13 лет назад, # ^ |
          Проголосовать: нравится 0 Проголосовать: не нравится
        отрезок - это двоичное число, где после нулей не идут единицы, то есть вида 1a0b.