Предлагаю обсудить задачи с SEERC 2015. Задачи есть в тренировках. [contest:100818]
№ | Пользователь | Рейтинг |
---|---|---|
1 | tourist | 4009 |
2 | jiangly | 3823 |
3 | Benq | 3738 |
4 | Radewoosh | 3633 |
5 | jqdai0815 | 3620 |
6 | orzdevinwang | 3529 |
7 | ecnerwala | 3446 |
8 | Um_nik | 3396 |
9 | ksun48 | 3390 |
10 | gamegame | 3386 |
Страны | Города | Организации | Всё → |
№ | Пользователь | Вклад |
---|---|---|
1 | cry | 167 |
2 | maomao90 | 163 |
2 | Um_nik | 163 |
4 | atcoder_official | 161 |
5 | adamant | 159 |
6 | -is-this-fft- | 158 |
7 | awoo | 157 |
8 | TheScrasse | 154 |
9 | nor | 153 |
9 | Dominater069 | 153 |
Название |
---|
Интересует задача C.
Можно для делителя числа N подсчитать prob[i], где i = 0,1,..35.
prob[i] — вероятность того, что всё закончится за i шагов.
Только это даёт TLE. Так как я для каждого такого числа перебираю его делители за sqrt(N).
Как ускорить? Или есть другое решение?
Простых чисел до sqrt(N) меньше 10000, поэтому найти разложение заданных чисел в простые можно за менее 100 миллионов операций.
Заметим, что нам не важно, какие именно простые входят в данное число, важно лишь количество каждого отдельно взятого простого. Возьмём все такие количества и сложим их в вектор, который отсортируем по неубыванию. Будем использовать динамику с запоминанием ответов для таких векторов. Тогда для каждого вектора мы посчитаем описанную Вами prob[i] всего один раз. Уникальных векторов, в отличие от чисел, не очень много, поэтому все 10000 тестов проходятся очень быстро, потому что для одних тестов используются запомненные значения из других.
Код: http://ideone.com/gJXUtq
Хотелось бы узнать, как решать A и C?
Задачу 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 — без шансов. =)
Хотел передать авторам задач "привет"! Автор задач А и В — найдись!
SEERC в тренировки на codeforces добавил Temirulan, так что спроси у него, кто авторы задач =)
А куда делась задача G?
Не сразу понял о чём вы. Даже не заметил этого.) Видимо авторы забыли добавить задачу в треньку =)
Официальные тесты этой задачи видимо некорректны. На все тесты у них один ответ:
eroare deschidere fisier 0
Интересно, какое количество команд приглашается с этого регионального этапа на финал? На baylor искал, не нашёл такой инфы.
а куда делась тренировка? Это из-за контеста так или кто-то ее спрятал?
Интересная ситуация :) только собирались написать ее, а уже нечего...
Подскажите, как решать F?
Корни нашего полинома могут быть целыми, рациональными (дробь) или иррациональными.
Рациональных корней не будет, так как самый первый коэффициент равен 1.
Док-во тут
Итак, перебираем 21 возможных целых корней (от -10 до 10). Учитываем сколько раз он встретился. Для этого делим наш полином на (x-v) до тех пор, пока делится "без остатка", где v — это корень. (Или же юзаем схему Горнера) Ответ на задачу: N — количество_целых_корней.
Задача А подозрительно напоминает NP-трудную. И ограничение 0.2 секунды. Это шутка такая?
Да, у румынских авторов интересное чувство юмора. Они часто пытаются развеселить участников подобным образом, это уже не первый год) Со временем к таким вещам начинаешь привыкать...
Вики говорит, что задача нехорошая, да.
Да, разумеется, co-NP, тавтология же, а не выполнимость.
А на разборе что-нибудь разумное по этому поводу было? Хотя бы идея авторского решения...
.>>>SEERC
.>>>разбор
))))))
Не понял прикола. Нужен кэп.
В Виннице разбор обычно проводится силами участников. Об авторских решениях румынских задач ничего не было известно.
Получается, что после контеста те ребята, которые что-то решили, выходят на сцену и рассказывают как они решали??? =)
omg! Отбор на финал, который хуже Воронежа. Остановите планету, я сойду!
А также ещё шутки: в задаче говорится, что в строке не более 51 переменной (это логично 26 строчных + 25 заглавных), но нигде не написано про длину выражения. Может там такой есть тест: (((...(A ^ B)...))), где количество скобок ~1e6 штук. =) Например в 3 тесте длина выражения без пробелов ~600 символов, суммарное количество переменных (с повторами) ~160.