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

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

Предлагаю обсудить задачи с SEERC 2015. Задачи есть в тренировках. [contest:100818]

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

»
11 лет назад, скрыть # |
 
Проголосовать: нравится +5 Проголосовать: не нравится

Интересует задача C.
Можно для делителя числа N подсчитать prob[i], где i = 0,1,..35.
prob[i] — вероятность того, что всё закончится за i шагов.
Только это даёт TLE. Так как я для каждого такого числа перебираю его делители за sqrt(N).
Как ускорить? Или есть другое решение?

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

    Простых чисел до sqrt(N) меньше 10000, поэтому найти разложение заданных чисел в простые можно за менее 100 миллионов операций.

    Заметим, что нам не важно, какие именно простые входят в данное число, важно лишь количество каждого отдельно взятого простого. Возьмём все такие количества и сложим их в вектор, который отсортируем по неубыванию. Будем использовать динамику с запоминанием ответов для таких векторов. Тогда для каждого вектора мы посчитаем описанную Вами prob[i] всего один раз. Уникальных векторов, в отличие от чисел, не очень много, поэтому все 10000 тестов проходятся очень быстро, потому что для одних тестов используются запомненные значения из других.

    Код: http://ideone.com/gJXUtq

»
11 лет назад, скрыть # |
 
Проголосовать: нравится +20 Проголосовать: не нравится

Хотелось бы узнать, как решать A и C?

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

    Задачу A все решают рандомом. Пока есть время, то всем переменным присваиваем значения случайным образом, затем находим значения выражений. Если они не равны, то выводим нолик. Если время подходит к концу, то выводи единичку.
    Мне кажется, что тесты очень-очень слабые, так как на таком тесте

    a ^ b ^ c ^ d ^ e ^ f ^ g ^ h ^ i ^ j ^ k ^ l ^ m ^ n ^ o ^ p ^ q ^ r ^ s ^ t ^ u ^ v ^ w ^ x ^ y ^ z ^ A ^ B ^ C ^ D ^ E ^ F ^ G ^ H ^ I ^ J ^ K ^ L ^ M ^ N ^ O ^ P ^ Q ^ R ^ S ^ T ^ U ^ W ^ X ^ Y ^ Z
    a ^ b ^ c ^ d ^ e ^ f ^ g ^ h ^ i ^ j ^ k ^ l ^ m ^ n ^ o ^ p ^ q ^ r ^ s ^ t ^ u ^ v ^ w ^ x ^ y ^ z ^ A ^ B ^ C ^ D ^ E ^ F ^ G ^ H ^ I ^ J ^ K ^ L ^ M ^ N ^ O ^ P ^ Q ^ R ^ S ^ T ^ U ^ W ^ X ^ Y ^ ~ Z

    любой рандом выведет 1, хотя есть набор пременных (1111..111 или 1111..110) при которых уравнения не равны. Всего 2^51 вариантов, угадать 2 из 2^51 — без шансов. =)

»
11 лет назад, скрыть # |
← Rev. 2  
Проголосовать: нравится +20 Проголосовать: не нравится

Хотел передать авторам задач "привет"! Автор задач А и В — найдись!

»
11 лет назад, скрыть # |
 
Проголосовать: нравится +5 Проголосовать: не нравится

А куда делась задача G?

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

Интересно, какое количество команд приглашается с этого регионального этапа на финал? На baylor искал, не нашёл такой инфы.

»
11 лет назад, скрыть # |
 
Проголосовать: нравится +5 Проголосовать: не нравится

а куда делась тренировка? Это из-за контеста так или кто-то ее спрятал?

Интересная ситуация :) только собирались написать ее, а уже нечего...

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

Подскажите, как решать F?

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

    Корни нашего полинома могут быть целыми, рациональными (дробь) или иррациональными.
    Рациональных корней не будет, так как самый первый коэффициент равен 1.
    Док-во тут
    Итак, перебираем 21 возможных целых корней (от -10 до 10). Учитываем сколько раз он встретился. Для этого делим наш полином на (x-v) до тех пор, пока делится "без остатка", где v — это корень. (Или же юзаем схему Горнера) Ответ на задачу: N — количество_целых_корней.

»
11 лет назад, скрыть # |
 
Проголосовать: нравится +10 Проголосовать: не нравится

Задача А подозрительно напоминает NP-трудную. И ограничение 0.2 секунды. Это шутка такая?