Здесь обсуждаются задачи тренировок ИТМО (http://neerc.ifmo.ru/trains/).
Тренировки проводятся по средам и субботам, начало в 16:30 (МСК), длительность - 5 часов, формат - ACM.
P.S. Пожалуйста, не обсуждайте до окончания тренировки задачи. Мы за честность :)
А какой чит ты запихнул?
Я вот полчаса думал не написать ли декартво дерево которое умеет все действия или корневую оптимизацию на запросах и решил, что лучше отчет по работе напишу)
А в С++ походу просто забыли включить оптимизацию.
Забавно, я решил абсолютно по-другому(вроде бы). Для каждого часового(или кого там) добавим 2 или 4 события - угол, ближний и дальний радиусы, и надо ли добавить отрезок в множество или убрать оттуда. Теперь задача свелась к такой - нужно уметь добавлять/удалять отрезки и считать сумму чисел на тех клеточках, которые покрываются хотя бы одним отрезком.
Для этого заводим дерево отрезков, в вершине хранятся 3 значения - собственно сумма по покрытым клеточкам(value), сумма чисел на всех клеточках, которые соответствуют этой вершине(full)(это предподсчитывается один раз в начале) и количество отрезков, которыми эта вершина полностью покрыта(add).
Добавляем/удаляем отрезки как обычно, реальное значение в вершине - это add[v] > 0 ? full[v] : value[v].
Есть тонкий момент - нельзя раздавать add детям, иначе может случиться, что надо из вершины вычесть 1, а там уже 0 и придется пойти в детей.
Что интересно, можно и раздавать, но тогда после того, как запустимся от детей, надо найти минимум из их add'ов, из них обоих этот минимум вычесть, а к себе прибавить.
Меня больше смущает, что до первого реджаджа мои решения по Е получали RE (казалось бы причём тут порядок сабмитов?), после него OK, а что после второго неизвестно, потому что система не даёт залогиниться.
Надеюсь, дальше все пойдет поспокойнее.
*nevermind*
F - Представим каждую операцию как композицию операций транспонирования и переворота относительно горизонтали. Почему такие? Потому что 2 операции транспонирования, или 2 операции переворота подряд не меняют матрицу. Запишем все наши операции в стек так, что бы 2 одинаковые не шли рядом. В итоге стек будет выглядеть как-то так:
Просуммируем все возможные исходы независимо по битам. Для iго бита определим, в составе скольких ксоров он присутствует, и домножим на 2i. Формула для количества исходных чисел с присутствующим iм битом - что-то вроде (N / 2i+1) * 2i + max(0, N % 2i+1 - 2i) = K. Тогда существует K чисел с единицей и N-K с нулем на iй позиции. Значит, будет 2*K*(N-K) ксоров с единицей в iм бите. В конце поделим сумму на N2.
Может кто-нибудь знает, будет ли сегодня тренировка? Вроде как Wednesday и уже почти 17-00 а все еще BEFORE.
я конечно кадр, неправильно понял условие J(про 200ft), начал решать B, сдал ее с +12 еле, еле, потом оказалось что в J обычный бфс(( дописать не успел(((
P.S. и вообще это бл**во, неужели нельзя делать условия rus и en?
В J обычная жадность решала :)
P.S. А ещё, вполне вероятно, можно было бы и формулу какую вывести.
да факт, то что я думал город НхМ, я про футы не понял, что на самом деле (N/200) * (M/200) (ведь так? или я дважды что то не так понял)
почему нет логинов? мы зарегистрировались давным давно...