Модераторы: Daevaorn

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Задача "Таинство суммы" 
V
    Опции темы
feodorv
Дата 12.1.2012, 19:14 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Комодератор
Сообщений: 2214
Регистрация: 30.7.2011

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



Цитата(Silent @  12.1.2012,  16:03 Найти цитируемый пост)
В том плане, что можно по неаккуратности ляп допустить

По неаккуратности ляпы можно допустить где угодно  smile И первоначальный вопрос как раз и состоял в:
Цитата(Lacoste1024 @  3.1.2012,  15:16 Найти цитируемый пост)
Что исправить? В каком направлении грести?

И ляпы там были...

Цитата(Silent @  12.1.2012,  16:03 Найти цитируемый пост)
А здесь прокатывает и O(NlogN)

Вот именно, для малых N годится и вариант с бинарным поиском (номер 2 в первом сообщении этой ветки). Просто он не учитывает все условия задания - отсортированности обоих списков, а лишь отсортированность второго. И даже если отталкиваться от бинарного поиска, то отсортированность первого списка приводит к сужению границ поиска во втором, а понимание того, как сужаются границы, приводит к варианту volatile. Но просто вариант с бинарным поиском прокатить может.

Цитата(Silent @  12.1.2012,  16:03 Найти цитируемый пост)
На АСМовских контестах предлагается решить ряд задач (10) за определенное время (3 часа). Эта задачка считается очень легкой и должна быть решена за 5-10 минут, сразу и без намека на отладку.

В данном случае мы не ограничены во времени и отладке. И даже если такой тест пришлось бы проходить, то после его прохождения всё равно стоило бы устроить разбор полётов в том стиле, как шахматисты пересматривают свои (и не только) партии. Это и есть обучение.

Цитата(Lacoste1024 @  4.1.2012,  08:51 Найти цитируемый пост)
sQu1rr, спасибо за решение. Оно прошло =) 

Вот и я тупо взял решение от sQu1rr, и вуаля, тест пройден. И в чём смысл такого "программирования"?

Silent, в Вашем решении я не понял эту строчку:
Код

        flag = (a[10000-tmp] != 1);

Откуда там взялось волшебное число 10000?


--------------------
Напильник, велосипед, грабли и костыли - основные инструменты программиста...
PM MAIL   Вверх
volatile
Дата 13.1.2012, 00:13 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


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

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



Цитата(feodorv @  12.1.2012,  19:14 Найти цитируемый пост)
Откуда там взялось волшебное число 10000? 
feodorv, это по условию задачи
Цитата

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


Silent, ваш вариант ялвяется логическим развитием варианта sQu1rr. Там действительно была некая ненадежность. При выходе значений из диапазона (-0x7FFF, 0x7FFF), программа сорершала сегфолт. Ваш вариант надежней в этом плане. Но скорость!
Это тот случай, о котором и говорил
Цитата(sQu1rr @  4.1.2012,  03:58 Найти цитируемый пост)
скорость доступа к set или map O(logn), 

умножив на перебор всех элементов, итоговая сложность вашего алгоритма N*logN
Зачем?  smile, Как я уже писал:
Цитата(volatile @  4.1.2012,  00:54 Найти цитируемый пост)
Задача решается за один проход.

т.е. O(N). Причем, учтите, что это самый неблагоприятный случай. В реале, будет даже быстрее.
(Кстати, ваш алгоритм уступает не только по времени, но и по памяти.)

Теперь о надежности. В чем не надежен мой алгоритм? Единственное условие - данные должны быть отсортированы. Но это прямое условие задачи. В конце концов, даже если сумасшедший пользователь  smile , даст на вход не отсортированые данные, моя програамка не совершит сегфолта. Просто будет неверный результат, что вполне естественно.
Вобще, надежность, это первое о чем я обычно думаю, и упрек в ненадежности, честно говоря меня несколько удивил...

Добавлено @ 00:14
---
зы:я говорю о надежности по отношению к данным пользователя (foolproof).
защититься от сумасшедшего сопровождения (maintenance) увы, невозможно. smile 


Это сообщение отредактировал(а) volatile - 13.1.2012, 00:40
PM MAIL   Вверх
feodorv
Дата 13.1.2012, 09:00 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Комодератор
Сообщений: 2214
Регистрация: 30.7.2011

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



Цитата(volatile @  13.1.2012,  00:13 Найти цитируемый пост)
это по условию задачи

Туплю  smile 


--------------------
Напильник, велосипед, грабли и костыли - основные инструменты программиста...
PM MAIL   Вверх
Ответ в темуСоздание новой темы Создание опроса
Правила форума "С++:Общие вопросы"
Earnest Daevaorn

Добро пожаловать!

  • Черновик стандарта C++ (за октябрь 2005) можно скачать с этого сайта. Прямая ссылка на файл черновика(4.4мб).
  • Черновик стандарта C (за сентябрь 2005) можно скачать с этого сайта. Прямая ссылка на файл черновика (3.4мб).
  • Прежде чем задать вопрос, прочтите это и/или это!
  • Здесь хранится весь мировой запас ссылок на документы, связанные с C++ :)
  • Не брезгуйте пользоваться тегами [code=cpp][/code].
  • Пожалуйста, не просите написать за вас программы в этом разделе - для этого существует "Центр Помощи".
  • C++ FAQ

Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, Earnest Daevaorn

 
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | C/C++: Общие вопросы | Следующая тема »


 




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


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

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