2014 dxdy logo

Научный форум dxdy

Математика, Физика, Computer Science, Machine Learning, LaTeX, Механика и Техника, Химия,
Биология и Медицина, Экономика и Финансовая Математика, Гуманитарные науки




Начать новую тему Ответить на тему На страницу 1, 2  След.
 
 Алгоритмическая задача про грузы и весы
Сообщение12.04.2020, 16:19 


09/03/20
34
Джек нашел $N$ камней и упорядочил их в порядке возрастания их массы. Массы всех камней различны. Самый легкий камень получил номер $1$, следующий – $2$ и так далее, самый тяжелый получил номер $N$.

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

Ваша задача – определить состояние весов после добавления каждого камня. Точные массы камней не известны – даются только их номера.

Входные данные
Первая строка содержит целое число $N$ $(1\leqslant N\leqslant 100000)$.

Каждая из следующих N строк содержит по два целых числа: $R$ $(1\leqslant R\leqslant N)$ и $S$ $(1\leqslant S\leqslant 2)$. $R$ – номер камня, который будет положен на чашу $S$. Все $R$ будут различны.

Выходные данные
Выведите $N$ строк – по одной для каждого камня. Если после добавления соответствующего камня чаша $1$ тяжелее, выведите $«<»$. Если сторона $2$ тяжелее, выведите $>$. Если невозможно определить, в каком состоянии будут весы, выведите $«?»$.

Помогите! Я не знаю как решать эту задачу. Подскажите идею, как её можно решить. Я понимаю, что её нужно решать с помощью дерева отрезков, но в голову приходит лишь тупой перебор, в стиле смотреть, если в одной куче есть, скажем, одна машинка с номером 5, а в другой, с номерами: 1,2,3,4 - то сказать, что тяжелее мы не сможем, иначе если найдется больше, или столько же грузов с номерами большими, чем в другой, то говорить, что в та куча будет тяжелее.

 Профиль  
                  
 
 Posted automatically
Сообщение12.04.2020, 16:21 
Заслуженный участник


09/05/12
25179
 i  Тема перемещена из форума «Computer Science» в форум «Карантин»
по следующим причинам:

- неинформативный заголовок;
- неправильно набраны формулы (краткие инструкции: «Краткий FAQ по тегу [math]» и видеоролик Как записывать формулы);
- отсутствуют собственные содержательные попытки решения задачи.

Исправьте все Ваши ошибки и сообщите об этом в теме Сообщение в карантине исправлено.
Настоятельно рекомендуется ознакомиться с темами Что такое карантин и что нужно делать, чтобы там оказаться и Правила научного форума.

 Профиль  
                  
 
 Posted automatically
Сообщение12.04.2020, 17:24 
Заслуженный участник


09/05/12
25179
 i  Тема перемещена из форума «Карантин» в форум «Computer Science»


-- 12.04.2020, 17:27 --

Начните с ответа на такие промежуточные вопросы. У вас есть полные данные о том, какие грузы на какой чашке весов лежат в данный момент (не суть важно, что было раньше, от предыстории состояние системы не зависит). При каких условиях вы сможете определить, какая из чашек тяжелее? Как вы это будете делать?

 Профиль  
                  
 
 Re: Алгоритмическая задача про грузы и весы
Сообщение12.04.2020, 19:09 


09/03/20
34
Как я понимаю, мы смотрим на номера из первой чаши, и если мы можем составить пары $(a , b)$ где $a > b$ и $a$ из второй чаши. Другими словами, я говорю, что мы можем сказать, что куча 1 больше кучи 2, тогда когда каждому элементу, кучи 1 соответствует меньший элемент кучи 2(а если нет пары, то будем считать что его вес -1)

 Профиль  
                  
 
 Re: Алгоритмическая задача про грузы и весы
Сообщение12.04.2020, 21:52 
Заслуженный участник


09/05/12
25179
Да, если для каждого груза из "меньшей" кучи можно найти свой больший груз из большей.

Ну и что, ни на какие мысли по части реализации это не наводит?

 Профиль  
                  
 
 Re: Алгоритмическая задача про грузы и весы
Сообщение12.04.2020, 23:44 


09/03/20
34
Ну, мне в голову приходит только создать две кучи, и в каждую добавлять по элементу, а когда надо узнать, что тяжелее, брать максимумы из этих куч, пока они не опустеют. Если у нас получилось, так сделать, т.е. сопоставить каждому элементу меньшей кучи, элемент, большей, то мы можем их сравнить, иначе - нет.

Но мне кажется, что моё решение слишком уж медленное.

 Профиль  
                  
 
 Re: Алгоритмическая задача про грузы и весы
Сообщение12.04.2020, 23:50 
Заслуженный участник


09/05/12
25179
Да, примерно так, но только предыдущее состояние можно хранить и учитывать.

А что, в условии оговаривалось время? :wink:

 Профиль  
                  
 
 Re: Алгоритмическая задача про грузы и весы
Сообщение13.04.2020, 00:01 


09/03/20
34
Ну, ограничение 1 секунда. Я не знаю насколько хорошей должна быть асимптотика, чтобы при таких $N$ уложиться в это время. Но эта задача из темы, которая называется: "Дерево Фенвика, дерево отрезков". Так что мой алгоритм мне не внушает доверия.

 Профиль  
                  
 
 Re: Алгоритмическая задача про грузы и весы
Сообщение13.04.2020, 00:13 
Заслуженный участник


09/05/12
25179
Почему же? Просто теперь надо вспомнить, что вы ответили на предварительные вопросы, и изменить алгоритм так, чтобы при добавлении данных о новом грузе не требовалось переделывать все заново.

 Профиль  
                  
 
 Re: Алгоритмическая задача про грузы и весы
Сообщение13.04.2020, 01:30 


09/03/20
34
Если честно, у меня мало идей по поводу того как связать дерево отрезков и алгоритм работы. Единственное, что я вижу общее между ними, это то, что ДО умеет быстро обрабатывать много запросов.

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

 Профиль  
                  
 
 Re: Алгоритмическая задача про грузы и весы
Сообщение13.04.2020, 01:43 
Заслуженный участник


09/05/12
25179
Попробуйте тогда просто сформулировать, что такое дерево Фенвика и для чего оно нужно (с деревом отрезков, кажется, все будет хуже, так что его пока оставим в покое).

 Профиль  
                  
 
 Re: Алгоритмическая задача про грузы и весы
Сообщение13.04.2020, 01:59 


09/03/20
34
Хорошо, дерево Фенвика - это такая структура данных, которое обладает некоторыми свойствами, такими как, изменение элемента и вычисление суммы на сегменте за быстро(за логарифм).

 Профиль  
                  
 
 Re: Алгоритмическая задача про грузы и весы
Сообщение13.04.2020, 02:54 
Заслуженный участник


09/05/12
25179
Уж очень обтекаемо... а дерево Фенвика для максимума? Посмотрите, неужели не видно?

 Профиль  
                  
 
 Re: Алгоритмическая задача про грузы и весы
Сообщение13.04.2020, 04:34 


09/03/20
34
Хммм... Насколько я понял, мы считываем всю последовательность добавлений на чаши в два дерева Фенвика - в первую чашу - первое дерево Фенвика, вторая чаша - второе дерево Фенвика. Затем мы будем выполнять запросы максимума на нужном сегменте.

Но мне кажется, что я неверно понял ваш посыл...

 Профиль  
                  
 
 Re: Алгоритмическая задача про грузы и весы
Сообщение13.04.2020, 04:51 
Заслуженный участник


09/05/12
25179
Ну да, это и есть решение.

 Профиль  
                  
Показать сообщения за:  Поле сортировки  
Начать новую тему Ответить на тему  [ Сообщений: 17 ]  На страницу 1, 2  След.

Модераторы: Karan, Toucan, PAV, maxal, Супермодераторы



Кто сейчас на конференции

Сейчас этот форум просматривают: YandexBot [bot]


Вы не можете начинать темы
Вы не можете отвечать на сообщения
Вы не можете редактировать свои сообщения
Вы не можете удалять свои сообщения
Вы не можете добавлять вложения

Найти:
Powered by phpBB © 2000, 2002, 2005, 2007 phpBB Group