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

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

Завершилась Седьмая командная олимпиада. Ссылка на задачи. Как решать B, D и F. Заранее спасибо.

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

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

Подскажите почему в Н (http://pastebin.com/Z7UQ0UiK) я ошибся.

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

задача В: полный перебор , кажется проходит...

задача F: если сделать два одинаковых хода то ничего не изменится, поэтому можно перебрать все возможные варианты (их 2^16=65536) так как влияет только четность...

задача D: не знаю см не решил((

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

    какой перебор у тебя в B проходит? за (n + m) * kn ?

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

      у меня за 0.8c прошло (n^k)*m. правда еще отсечение, что если где то уже 2 соединенные одного цвета, то дальше в рекурсии не идем. но может и так бы прошло.

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

        не понимаю, а что ты перебираешь?

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

        Можно еще сократить перебор (приблизительно в 8 раз) тем, что зафиксировать цвет первой вершины, а потом умножить ответ на количество цветов.

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

        И еще, наверное, он kn, а не nk.

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

        я сначала писал рекурсию на c++ не зашло по времени, потом что-то химичил, потратил 5 попыток, всё равно по времени летело, потом то же самое,что и посылал переписал на pascal зашло за 0.46. Я думал c++ работает быстрее паскаля, а тут такая лажа, кто может это объяснить?

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

          вообще это вполне мог быть рантайм, он на этом сайте часто ловится как ТЛ.

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

В D, как я понимаю можно придумать правило что бы переходить от n к n+1(просто вставкой в какое то место и это как то связано со степенью 2ки ), но не додумал. Тоже интересно узнать решение.

Расскажите, пожалуйста, кто нибудь C и G. Как делать G с таким ограничением? я только за корень знаю и то не уверен, что верно.

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

    D: пусть у нас есть корректная перестановка P с числами [0..n-1]. Тогда перестановка P*2 + P*2+1 тоже будет корректна. В каждой половине плохих троек нет, во всём же массиве тоже нет, т.к. если берём i и j слева, а k справа, то разнича p[i]-p[j] чётная, а p[j]-p[k] нет. Начинаем с массива P = [0], потом просто выводим элементы меньшие n.

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

Как решать 3ю и предпоследнюю???

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

А чего они задачи с Тимуса тырят?

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

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

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

В H такая идея: идем по разности H-W(от 0 до k-1). Очевидно, что нужно взять максимальный h такой, чтобы h*(h+d)<=k. h находим бинпоиском. Или еще можно 2 указателя по разности h-w и h.

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

    можно немного по другому, пусть h<=w. тогда h<=k^0.5. переберём все значения h, и для каждого h все допустимые значения w,и всегда будем пробовать улучшать ответ. Сложность где-то O(k).

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

А эти задачи где сейчас сдавать можно?В архиве нет.

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

    нельзя(

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

    повбивай в гугле, может найдёшь откуда они. Точно могу сказать, что последня есть на dl.gsu.by областная республиканчкая олимпиада 2006 год!