Модераторы: Alx, Fixin
  

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Арифметическая прогрессия, Тимус 
:(
    Опции темы
CPlusPlusFAN
Дата 4.4.2008, 20:19 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 315
Регистрация: 1.11.2005
Где: Воронеж

Репутация: нет
Всего: нет



Просьба посмотреть эту задачу:
http://acm.timus.ru/problem.aspx?space=1&num=1395

Я придумал достаточно быстрый алгоритм, требующий O(N^2) времени, но расходующий O(N^2) памяти. У меня прога еле влезла в лимит памяти варианта 1 данной задачи. У меня было дерево, узлы которого - байты числа. Поиск числа по нему занимал 4 итерации, т.е. не зависел от количества чисел. Для каждых двух чисел я по дереву определял, существует ли третье число в массиве. Эти данные заносились в двухмерный массив и затем вычислялась максимальная цепочка. Т.о. работало за O(N^2) шагов и требовало O(N^2) памяти (массив+дерево).
У меня вопрос, каким образом можно выделить самую длинную арифметическую прогрессию из последовательности чисел за O(N^2) операций, тратя при этом O(N) памяти?

Это сообщение отредактировал(а) CPlusPlusFAN - 5.4.2008, 01:41
PM MAIL ICQ Jabber   Вверх
maxdiver
Дата 6.4.2008, 18:13 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 381
Регистрация: 29.1.2008
Где: Саратов

Репутация: 2
Всего: 18



А где найти часть 1 задачи? Я написал простое решение за N^2, хотел проверить его, и только потом улучшать потребление памяти, а тут оказывается, что субмитить "часть 1" нельзя :(

Моё решение - для каждой пары (i,j) за О(1) движущимся указателем искать следующий элемент k в арифметической прогрессии. Пока я записал его в очевидной форме с двумерными массивами, но есть подозрение, что если изменить порядок вычислений, то двумерных массивов можно избежать.
PM MAIL WWW ICQ   Вверх
PPS05
Дата 8.4.2008, 12:32 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 262
Регистрация: 6.11.2005
Где: Беларусь, Минск

Репутация: нет
Всего: 7



Имею мысль, что сложность O(N^2) не пройдет по времени.

Добавлено через 21 секунду
Надо линейно или за O(N*log N)

Добавлено через 1 минуту и 38 секунд
Цитата(maxdiver @  6.4.2008,  17:13 Найти цитируемый пост)
А где найти часть 1 задачи?


Там же есть ссылка...

Добавлено через 6 минут и 3 секунды
хм...
Цитата

A complexity of our solution cannot be defined strictly, but it is impossible to solve this problem faster than O(N^2)



--------------------
Ушел с форума и не вернулся.
PM MAIL ICQ   Вверх
maxdiver
Дата 8.4.2008, 14:40 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 381
Регистрация: 29.1.2008
Где: Саратов

Репутация: 2
Всего: 18



PPS05
Ага, я тоже форум прочитал, поэтому и надеялся, что чистый N^2 пройдёт smile
Вообще, 100 миллионов по идее должно впритык влазить в 1 секунду...

Мда, а ссылку на первую часть как-то я не заметил )))
Искал "часть 1" через гугл, он нашёл что-то не то )

[added]
Да, что-то первая часть со скрипом прошла smile
0.2 сек

Это сообщение отредактировал(а) maxdiver - 8.4.2008, 15:08
PM MAIL WWW ICQ   Вверх
PPS05
Дата 8.4.2008, 16:55 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 262
Регистрация: 6.11.2005
Где: Беларусь, Минск

Репутация: нет
Всего: 7



Цитата(maxdiver @  8.4.2008,  13:40 Найти цитируемый пост)
Вообще, 100 миллионов по идее должно впритык влазить в 1 секунду...


Я достаточно учавствовал на подобных олимпиадах, обычно на секунду давали порядка 10^7 - не больше. Может у них комп мощнее... Смотрел статистику? 0.2 сек для N^2 как-то уж быстро. Я было даже сел писать динамику, но понял, что неправ, хотя скорее именно динамикой и решается.

Добавлено через 8 минут и 26 секунд
Во всяком случае, мои надежды на то, что "влезет" всегджа пролетали...  smile 


--------------------
Ушел с форума и не вернулся.
PM MAIL ICQ   Вверх
CPlusPlusFAN
Дата 30.4.2008, 13:33 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 315
Регистрация: 1.11.2005
Где: Воронеж

Репутация: нет
Всего: нет



Народ, не знаете, как её можно решить? Может кто уже решил?

ЗЫ Я уже не надеялся на ответы. smile 
PM MAIL ICQ Jabber   Вверх
Akina
Дата 30.4.2008, 14:39 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Советчик
****


Профиль
Группа: Модератор
Сообщений: 20581
Регистрация: 8.4.2004
Где: Зеленоград

Репутация: 2
Всего: 454



Вот даже не смотрел. И не буду. Что, запостить условие задачи нельзя было? руки оборвет?


--------------------
 О(б)суждение моих действий - в соответствующей теме, пожалуйста. Или в РМ. И высшая инстанция - Администрация форума.

PM MAIL WWW ICQ Jabber   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | Интересные и занимательные задачи по программированию | Следующая тема »


 




[ Время генерации скрипта: 0.0467 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.