ENG  RUSTimus Online Judge
Online Judge
Задачи
Авторы
Соревнования
О системе
Часто задаваемые вопросы
Новости сайта
Форум
Ссылки
Архив задач
Отправить на проверку
Состояние проверки
Руководство
Регистрация
Исправить данные
Рейтинг авторов
Текущее соревнование
Расписание
Прошедшие соревнования
Правила
вернуться в форум

Обсуждение задачи 1135. Новобранцы

Idea O(N)
Послано Felix_Mate 22 июл 2015 12:58
Я долго бился с этой проблемой несмотря на то,что сложность <200. Я пытался решить с помощью ДП,но там очень много случаев и сложная реализация. Задачу можно решить логически: во-первых,первые символы "<" и последние символы ">" ни на что не влияют,поэтому удалим их; во-вторых,если слева есть хоть один ">",то он в ЛЮБОМ случае будет меняться с КАЖДЫМ "<" РОВНО один раз(если "<" существует). Т.е. нас не интересует конструкция строки. Нас интересуют числа Z[1],E[1],Z[2],E[2],...Z[p],E[p],где Z[i] -количество ">" в последовательности 00000000...00000,а E[i]- количество "<" в последовательности 11111....11111111. Т.е. нашу строку делаем в виде 00...0011..1100..0011..11........00..0011..11,где P чередований (я ">" заменил на "0",а "<" на "1")
. Тогда ответ есть Z[1]*(E[1]+...E[p])+Z[2]*(E[2]+..+E[p])+...+Z[p]*E[p]. Сумму можно посчитать через частичные с помощью ДП. Асимптотика O(N).
Re: Idea O(N)
Послано BZz13 28 ноя 2015 22:15
madness :D
Re: Idea O(N)
Послано Combatcook 22 июл 2016 20:49
Imho, it can be solved by easier way. Let's create the array, where put 0 instead of '<' and 1 instead of '>'. Then answer is number of swaps in bubblesorting of this array.
Re: Idea O(N)
Послано Filip Franik 6 фев 2017 19:24
I went exactly this way and my solution looks very easy!
>><<><
110010 | counter = 0
Now we go from the right and move every 1 all the way to the right and count the moves
(we don't need to actually move anything but you can see everything better this way)
110001 | counter = 1[4->5]
100011 | counter = 1 + 3[1->4]
000111 | counter = 1 + 3 + 3[0->3] = 7
I got AC with this O(n)
Re: Idea O(N)
Послано Zteeks 2 июн 2017 01:06
Thank all of you) Very helpful! Get my AC using this solution
Re: Idea O(N)
Послано Mahilewets 3 июн 2017 15:18
Moving?  Overkill.
Just count how many inversions are there.  I don't remember exactly,  which symbol,  '<'  or '>',  should be considered as 1 and which as 0. Don't even try to memorize the sequence.  Just have a  counter and increment it each time when encountered 1 and add counter value to answer each time when encountered 0.