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

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

Всем доброе время суток.

Очередной раунд на Codeforces подготовлен мною. Это мой дебют в написании контестов. Приглашаю всех людей из второго дивизиона поучаствовать. Надеюсь, что все пройдет хорошо, все приятно проведут время и смогут повысить свои навыки в олимпиадном программировании.

Огромное спасибо Рахову Артему (RAD), и Михаилу Расиховичу Мирзаянову (MikeMirzayanov) за подготовку раунда и за мотивацию.  

Всем удачи и высокого рейтинга!!!

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

15 лет назад, скрыть # |
 
Проголосовать: нравится 0 Проголосовать: не нравится
Будет ли возможность для div1 участвовать вне конкурса?
15 лет назад, скрыть # |
 
Проголосовать: нравится +10 Проголосовать: не нравится
Nice to see a division 2 participant writing problems for division 2.
Nice move by admins. and encouragement too!! :D
15 лет назад, скрыть # |
Rev. 2  
Проголосовать: нравится -7 Проголосовать: не нравится

I've just noticed that no div-1 round today :(.

15 лет назад, скрыть # |
 
Проголосовать: нравится 0 Проголосовать: не нравится
Will the competition be rated for out-of-competition participants?
15 лет назад, скрыть # |
 
Проголосовать: нравится 0 Проголосовать: не нравится
Вспомнил СFBR #76 - первый "фиолетовый" раунд.
15 лет назад, скрыть # |
 
Проголосовать: нравится +4 Проголосовать: не нравится
Стать что ли зеленым и нписать контест ))
15 лет назад, скрыть # |
 
Проголосовать: нравится +3 Проголосовать: не нравится
Стать что ли зеленым и нaписать контест ))
15 лет назад, скрыть # |
 
Проголосовать: нравится +19 Проголосовать: не нравится
Thanks for the problems Alexander, they were very nice! :)
15 лет назад, скрыть # |
Rev. 2  
Проголосовать: нравится 0 Проголосовать: не нравится

Я так понимаю в Е ответ да, если в графе нет мостов? Как посчитать сам ответ?
И на чем ломали С?

UPD. Кстати спасибо за контест, хорошие понятные задачи
15 лет назад, скрыть # |
 
Проголосовать: нравится -6 Проголосовать: не нравится
Stringy contest. :)
15 лет назад, скрыть # |
Rev. 2  
Проголосовать: нравится +18 Проголосовать: не нравится

It is naughty to let letter 'Y' be a vowel and not included in the pretest :)
  • 15 лет назад, скрыть # ^ |
     
    Проголосовать: нравится +19 Проголосовать: не нравится
    also 'i' wasn't in pretest :-) in some code i seen this (not exactly this code, but it's about the bug):

    for(int i = 0; i < n; i++) {
    if(str[i] == 'a' || str[i] == 'A' || ... || str[i] == 'I' || str[i] == i)
    }

    There were all the vowels, but notice the 'i' vs i :-)

    Nice contest, thanks problemsetter!
15 лет назад, скрыть # |
 
Проголосовать: нравится -7 Проголосовать: не нравится
The constarints for problem B were so small that one could just print the pattern (only 8 patterns are there in 2-9).Made it the easiest problem
  • 15 лет назад, скрыть # ^ |
     
    Проголосовать: нравится +8 Проголосовать: не нравится
    One dude in my room did the same, and got hacked. It isn't that easy copy pasting so much of the output into the code, and not getting anything wrong. ;)
  • 15 лет назад, скрыть # ^ |
    Rev. 2  
    Проголосовать: нравится +13 Проголосовать: не нравится

    If you "precompute" the patterns by hand, then you will waste a lot of time.
    If you "precompute" the patterns by an algorithm, then the best thing to do is to send the algorithm, not the patterns.

    The best (surely, the fastest) way to solve that problem is to generate patterns by an algorithm.

    ..And as Shuaib said, that way is also the safest!
15 лет назад, скрыть # |
 
Проголосовать: нравится 0 Проголосовать: не нравится
Меня всегда напрягали задачи где что-то "ромбом" подобным строится или чего хуже - "сотой". Надеюсь, автор задач предложит красивое решение, идеи которой я наконец то запомню..
15 лет назад, скрыть # |
Rev. 2  
Проголосовать: нравится -30 Проголосовать: не нравится

razbor kogda?
15 лет назад, скрыть # |
 
Проголосовать: нравится +11 Проголосовать: не нравится
это так задумывалось, что задача Е уже была на какой то олимпиаде
15 лет назад, скрыть # |
 
Проголосовать: нравится +8 Проголосовать: не нравится
У меня одного были сегодня какие-то баги с отображением кода? Иногда он отображался без подсветки синтаксиса, как в блокноте.
15 лет назад, скрыть # |
 
Проголосовать: нравится +3 Проголосовать: не нравится
i just learned to read the most obvious facts as well ..... LoL
15 лет назад, скрыть # |
 
Проголосовать: нравится 0 Проголосовать: не нравится
разбор будет?
15 лет назад, скрыть # |
Rev. 2  
Проголосовать: нравится +3 Проголосовать: не нравится


15 лет назад, скрыть # |
 
Проголосовать: нравится +16 Проголосовать: не нравится
AEIOU......Y
15 лет назад, скрыть # |
Rev. 4  
Проголосовать: нравится -13 Проголосовать: не нравится

Why I can't hack pedromnasc solution of A in CF #89 room #38. In his solution he takes max array size only 110. But in answer, the array size is 198. How it gives correct answer????
It must not print more than 110 char.But it does.. HOW????
Here is  pedromnasc's. code. http://mirror.codeforces.com/contest/118/submission/741727

My input string is "CCCCCCCCCCDDDDDDDDDDQQQQQQQQQQZZZZZZZZZZLLLLLLLLLLPPPPPPPPPPbbbbbbbbbbbbbbbbbbbbggggggggggttttttttt"
Which has 99 char.
And his solution is
".c.c.c.c.c.c.c.c.c.c.d.d.d.d.d.d.d.d.d.d.q.q.q.q.q.q.q.q.q.q.z.z.z.z.z.z.z.z.z.z.l.l.l.l.l.l.l.l.l.l.p.p.p.p.p.p.p.p.p.p.b.b.b.b.b.b.b.b.b.b.b.b.b.b.b.b.b.b.b.b.g.g.g.g.g.g.g.g.g.g.t.t.t.t.t.t.t.t.t"
Which is correct. :O How??
It's length is 198, which is grater than his "aux" array size. How it obtain the "EXTRA" char (110 to 198)th char in aux[110]?? :O

I also resubmit my code only for the array size.

My question is.......
Does array size matter in CF compiler ????????

15 лет назад, скрыть # |
Rev. 7  
Проголосовать: нравится +1 Проголосовать: не нравится

Thanks andreyv ...It was unknown to me.

It gives me a good lesson also..   :)

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

Задача C какая-то жесть, потратил на нее 40 минут, а когда начал писать E, ее взломали, в итоге ни C, ни E...
Сейчас буду смотреть как это нормально писать надо

Выяснилось, что я перепутал в голове "больше" и "меньше"...

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

In today's problem C, I wrote my code quickly and believed it to be right, then I submit it with G++, and it returns an "Runtime Error"

Like this:

http://mirror.codeforces.com/contest/118/submission/742856

And after some minutes, I resubmitted exactly the same code, but in MS C++

http://mirror.codeforces.com/contest/118/submission/743301

And I  passed the pretest and finally got Accepted....

Why this strange thing happens?


UPD:  I tried my two problems in "Custum Test", using the test

45 32
293440596342887581257444442930778730382520372

and still RE in G++, and AC in C++, isn't it a bug in G++ 4.6?

  • 15 лет назад, скрыть # ^ |
     
    Проголосовать: нравится +11 Проголосовать: не нравится
    Apparently your "cmp" function is against requirements for std::sort.
    If num[x] and num[y] are both equal to 0, it will always return true.
    Thus for some x and y:  cmp(x, y) && cmp(y, x) is true (which semantically means (x<y)&&(y<x)). Likely g++ compiler checks that and yields runtime error if it detects inconsistency like that.
15 лет назад, скрыть # |
 
Проголосовать: нравится 0 Проголосовать: не нравится
7 out of the top 10 are new unrated coders...good to see that the competition is only increasing ...
15 лет назад, скрыть # |
 
Проголосовать: нравится +1 Проголосовать: не нравится
great round :)
15 лет назад, скрыть # |
Rev. 2  
Проголосовать: нравится +11 Проголосовать: не нравится

I really like the problem set.  Alexander does a great work. Nice description and finally fine problem set with logically good concept.

15 лет назад, скрыть # |
 
Проголосовать: нравится +5 Проголосовать: не нравится
было забавно когда один сокомнатник начал подряд ломать всех на задаче А ))
15 лет назад, скрыть # |
 
Проголосовать: нравится +1 Проголосовать: не нравится
Really nice problem set thanks for this nice contest :)
15 лет назад, скрыть # |
 
Проголосовать: нравится +1 Проголосовать: не нравится
Waiting eagerly for the editorials ....
15 лет назад, скрыть # |
 
Проголосовать: нравится 0 Проголосовать: не нравится

Хорошо бы чтобы виртуальные контесты на место вернулись. А то в них интереснее дорешивать пропущенные контесты.

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

Разбор задач. Codeforces beta round #89.

Задача A.

Первая задача на реализацию. Надо было пройтись циклом по строке и все согласные буквы скопировать в новую строку. После этого пробежаться по полученной строке и перед каждой буквой вывести ‘.’.

 

Задача B.

Вторая задача также чисто на реализацию. Ее можно было выполнить следующим образом. Если задано n, то надо было вывести 2 * n + 1 строк для узора. При этом для строки I (0 <= I <= N) – количество пробелов в начале строки будет равно 2 * N i. Для строки с номером I от N + 1 до 2 * N количество пробелов равно (I - N) * 2.

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


Задача С.

Итак, в задаче требуется получить наиболее красивый номер и затратить как можно меньше денег для этого. Разобьем задачу на подзадачи и решим ее для каждой цифры в отдельности. Чтобы затратить наименьшее количество денег и сделать максимальное количество замен следует для каждой цифры С заменять в номере все цифры отличные от нее сначала по модулю 1, затем по модулю 2, затем по модулю 3 и т д по возрастанию модуля, в этом и только в этом случае набранная сумма будет наименьшей. Естественно, если произведено нужное количество замен K, то работу алгоритма стоит прекратить. Однако, чтобы получить лексикографически наименьшую строку K с цифрами С, то надо производить замены следующим образом. Пусть на данном шаге алгоритма мы хотим поменять все цифры, отличные от цифры С по модулю I, то есть в строке все цифры С + I и цифры С – I заменить на цифру С. В таком случае сначала стоит заменять все цифры С + I на С, и замены производить с начала строки. А после поменять все цифры С – I на C, и замены производить с конца строки. В этом случае Петя потратит наименьшее количество денег, и получит лексикографически наименьший номер.

После останется выбрать наилучший ответ из 10 строк. Таким образом, асимптотическая сложность алгоритма равна 10 * 10 * n.   

                 

Задача D.  

Задача решается ленивой динамикой. Пусть z[n1][n2][2] – это количество способов расставить войска в легионе Цезаря. Параметры обозначают следующее, n1 – это пехотинцы, n2 – это всадники, третий параметр обозначает  какие войска ставит Цезарь в начало шеренги. Переходы следующие: если Цезарь хочет поставить n1 оставшихся пехотинцев в шеренгу, то из состоянии z[n1][n2][0] можно перейти в состояние z[n1 – i][n2][1], где I такое что (0 <= I <= min(n1, k1)). Если же Цезарь хочет поставить всадников, то из состояние динамики z[n1][n2][1] переходим в состояние z[n1][n2 – i][0], где 0 <= I <= min(k2, n2).   

 

Задача E.

Формально задачу можно поставить так. Нам задан неориентированный связный граф, надо ориентировать его дуги таким образом, чтобы получился сильно связный ориентированный граф. Известна следующая теорема (на теоретической базе которой написана задача), что такой граф допускает ориентацию к сильно связному орграфу тогда и только тогда, когда каждое ребро входит в какой либо цикл.

Чтобы это проверить, достаточно запустить обход в глубину из произвольной вершины и ориентировать ребра графа в направлении этого обхода. Получилась некоторая ориентация графа. Чтобы убедиться, что в исходном графе нет мостов, достаточно взять полученную ориентацию графа, поменять в ней направление дуг, и проверить, что сохраняется сильная связность. Это можно сделать вторым поиском в глубину. Если сильная связность сохраняется, то ответом на задачу будет ориентация, полученная при первом обходе в глубину.   

 

15 лет назад, скрыть # |
 
Проголосовать: нравится +27 Проголосовать: не нравится
- What is the number of rated participants on Codeforces?
- It's... OVER NINE THOUSANDS!
- WHAT? OVER NINE THOUSANDS!?
15 лет назад, скрыть # |
 
Проголосовать: нравится 0 Проголосовать: не нравится
Someone please give us Idea of solving problem C. 
15 лет назад, скрыть # |
 
Проголосовать: нравится +7 Проголосовать: не нравится
It was a nice contest as DIV 2 contest. I wasted all the time in C where I needed to try for D. :(

Thanks to Alexander, RAD and Mike Mirzayanov for such contest. 
15 лет назад, скрыть # |
 
Проголосовать: нравится +5 Проголосовать: не нравится
А кто видел решение M0sTik по задаче Е?. Посмотрите, очень интересно :)
15 лет назад, скрыть # |
 
Проголосовать: нравится 0 Проголосовать: не нравится
  Thanks to  Alexander'DIV2. I have a question about submit. My first submit is skipped.Why?
15 лет назад, скрыть # |
 
Проголосовать: нравится 0 Проголосовать: не нравится
Помогите мне, пожалуйста!
При отправке решение на задачу D у меня не проходит 8 тест.
Беру тест, запускаю у себя и в запуске (!) и выдает правильный ответ.
Что делать?
15 лет назад, скрыть # |
 
Проголосовать: нравится 0 Проголосовать: не нравится
Задача Е прикольная (остальные не могу оценит по достоинству за разностью моего и их уровней), спасибо за контест =)
15 лет назад, скрыть # |
 
Проголосовать: нравится +1 Проголосовать: не нравится
can't wait for the editorial to see the E Algorithm .. 
if someone can tell me it ... this will be highly appreciated :D