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

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

Добро пожаловать на 2013-2014 CT S01E04: 2013 Kashan Contest + Some Problems of 2009 Google Code Jam World Finals (GCJ WF 2009). Продолжительность тренировки — 5 часов. Тренировка открыта как для команд, так и для индивидуальных участников. После ее окончания вы можете дорешивать задачи тренировки или поучаствовать в ней виртуально, если не смогли принять участие одновременно со всеми. Пожалуйста, участвуйте в тренировке честно.

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

Регистрация на тренировку будет доступна со страницы Тренировки и будет открыта до окончания тренировки. Регистрируя команду, выберите именно тех её членов, кто будет писать тренировку.

Основной набор задач на тренировку предоставил mohammadrdeh. Спасибо, большая помощь! Берите пример.

Удачи!

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

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

I think, that solutions in the Gym section should be opened for everyone. In my humble opinion Codeforces is the best community of programmers, mostly because you can learn from others.

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

nice problem setter

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

Hello everyone,

It's my first time participating in a training competition of codeforces and I would like to ask if the results afect the contestants rating.

Thank you very much for reading my question and I would like to wish everyone good luck to the upcoming event!!!

Have a nice competition, Adamos2468

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

I hope you all enjoyed our problems. Also I want to thank my teammates, Alisafe and leviathan. Without their help I could not be able to prepare this problemset.

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

    Thanks a lot for you and your teammates! It was really good contest — well-prepared and interesting. Also I'm sure it is right policy to share contests with community.

    Hope, it could be a good tradition to use local contests for public trainings.

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

How to solve problem G and K and also L ?

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

    K

    Since P = product of primes, it can have at most 2^7 divisors (when P = 2*3*5*7*...). Thus you can do dynamic programming with state (how many number used, divisor of P).

    G

    It is data structure problem. You need to maintain which person is standing and how many pairs using some data structure. It's quite hard to explain in words. You can see code of ntu_tst_004

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

    L: let's generate graph of alphabet by edges from input. It's obvious that this graph is some numbers of cycles. Let's look on first character of our text, call this character s0. We must change it to lexicography best character. Let we change it to some other symbol — obvious that this symbol must be the best lexicography symbol in cycle which contain s0. Let this symbol is placed d0 symbols after s0. Than X = l0*k0 + d0, where l0 — the length of cycle which contain s0, k0 — some number.

    Let's look on i-th possition. Tryed to place different d[i], we must choose such that system of equations l[i]*k[i] + d[i] solvable and this d[i] best lexicography. How to check if solvable? Prefix of system of equations [1..i-1] solvable, we must check that last i perhaps for first [1..i-1]. Check it: solve this system l[j]*k[j] + d[j] = l[i]*k[i] + d[i], it's diophantine equations.

    I hope that you understand our solution:)

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

hello everyone

one asked where I find the problems of this gym for submit again?? please!

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

How to solve problems D,E? Is E solvable in doubles?

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

I very humbly request codeforces to open solutions of gym for public. If they do not want to open the submissions for all, then please give us a good logical difference between gym contests and regular codeforces contest policy of submissions.

It would be really helpful if we would be able to see the solutions.

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

Any Hints for ProblemC — Combiantion Locks?? I tried an approach using bitmasking, but was unable to decide among many states which to keep and which to reject??

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

Расскажите кто-нибудь, пожалуйста, как решать H, I, J, M!

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

Since there don't seem to be any official test data / judges' solutions available for this one, I guess I'll write an editorial. Just hold on!

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

Как решать J?

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

    Будем рассматривать диапазон мест как отрезки. Задача сводится к тому, чтобы найти наибольшее количество не пересекающихся отрезков на окружности.

    Наблюдение: Если есть отрезки которые полностью содержат другие отрезки, то их можно выбросить и больше не рассматривать. Так как если есть оптимальный ответ, который содержит какой-нибудь подобный отрезок, то его можно заменить на более мелкий(который содержится в нем), от этого хуже не станет.

    Утверждение: если мы знаем про какой-либо отрезок, что он содержится в оптимальном ответе, то набор отрезков, которые входят в этот ответ можно набирать жадно, начиная с текущей по часовой стрелке.

    Алгоритм: перебирать все отрезки, а потом начиная с них запускать жадный алгоритм, может не уложиться по времени. Поэтому можно заметить, что нам можно жадно брать сразу кучу отрезков, а не один, пока хватает длины окружности. Для каждого отрезка сохраним какая длина нам нужна если мы возьмем жадно 2^k (для каждого k) отрезков начиная с текущей. Теперь мы можем для каждого отрезка за логарифмическое время найти максимальное количество отрезков, которые мы можем взять (прыжками по степеням двойки, подобно алгоритму нахождения lca двоичным подъемом).

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

    Еще можно так решать (доказывать решение не умею):
    развернем 2 цикла отрезков, т.е. возьмем помимо отрезка [L, R] еще и отрезок [L+M, R+M]. Для нового набора отрезков решим задачу жадно. Теперь пройдемся двумя указателями по решению, находя лучшее решение, начинающееся с каждого из выбранных отрезков.

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

wow ,i'm stuck in nostalgia ,i have 20GB pic and movies form this contest in Kashan. thank u mohammadrdeh for ur nice problems.

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

Is there an analysis for the problemset?