М
Молодежь
К
Компьютеры-и-электроника
Д
Дом-и-сад
С
Стиль-и-уход-за-собой
П
Праздники-и-традиции
Т
Транспорт
П
Путешествия
С
Семейная-жизнь
Ф
Философия-и-религия
Б
Без категории
М
Мир-работы
Х
Хобби-и-рукоделие
И
Искусство-и-развлечения
В
Взаимоотношения
З
Здоровье
К
Кулинария-и-гостеприимство
Ф
Финансы-и-бизнес
П
Питомцы-и-животные
О
Образование
О
Образование-и-коммуникации
Thrillgang
Thrillgang
10.11.2021 15:28 •  Информатика

4. Каким будет результат выполнения цикла

👇
Открыть все ответы
Ответ:
honeybeyker
honeybeyker
10.11.2021
Алгоритм. Отсортируем массив за O(nlogn). Запустим цикл по всем k, в теле цикла будем искать индексы i <= j, такие, что A[i] + A[j] = -A[k]. Понятно, что этот поиск надо делать за O(n), чтобы общее время работы было квадратичным.

Искать будем с двух указателей. Рассмотрим кусок массива, в котором ищем ответ A[l..r] (первоначально l = 1, r = n). Посмотрим на A[l] + A[r]. Если эта сумма больше, чем нужно, уменьшим на 1 число r, если меньше - увеличим на 1 число l, если равно -A[k] - победа, выводим ответ (l, r, k). Будем повторять это в цикле, пока l не станет больше r.

Если после выполнения цикла по k искомая тройка так и не нашлась, пишем "нет".

Корректность. Пусть в какой-то момент A[l] + A[r] < -A[k]. Тогда, чтобы иметь возможность получить A[i] + A[j] = -A[k], надо сумму увеличить. A[l] оказалось настолько мало, что даже если прибавить к нему самое большое возможное число (а это как раз A[r] - массив-то отсортирован!), то всё равно получается слишком мало. Значит, A[l] в ответе не будет, и можно безбоязненно выкинуть его из рассмотрения. Аналогично будет и в случае, когда A[l] + A[r] > -A[k].
Осталось показать, что если такая тройка индексов существует, то наш алгоритм не выдаст неверный ответ "нет". Но это очевидно: если ответ (I, J, K), то уж при k = K алгоритм что-нибудь да найдёт.

Время работы. Внутренний цикл выдает ответ не более чем за линейное время: всякий раз размер массива уменьшается на 1, всего элементов в массиве n, а на каждом шаге тратится константное время; пусть время выполнения внутреннего цикла T'(n) < an. Тогда все n проходов внешнего цикла затратят время T1(n) <= n T'(n) < an^2.
Сортировку можно сделать за время T2(n) < b nlogn < bn^2
Общее время работы T(n) = T1(n) + T2(n) < an^2 + bn^2 = cn^2
4,7(97 оценок)
Ответ:
skydux
skydux
10.11.2021

1 Виндовс Линукс Мак  OS

2 да можно

3.4. По сути, виртуальная машина – это программа, которая эмулирует на вашем компьютере ещё один компьютер, с теми параметрами, которые вы ему зададите. То есть это компьютер в компьютере :) Для чего это нужно? Причин для использования виртуальной машины на вашем компьютере может быть несколько:

Тестирование дополнительной операционной системы, с целью посмотреть, как она работает, насколько она удобна и каковы её особенности и возможности. Но при этом вы не хотите удалять ту операционную систему, которая уже стоит на вашем компьютере. Передо мной такая задача встала, когда я несколько лет назад решал для себя, стоит ли переходить с Windows XP на Window Я установил на виртуальной машине Windows 7, посмотрел тогда ещё сырую версию этой операционной системы, и в то время принял решение оставить на своём компьютере Windows XP. На Windows 7 я перешёл только после того, как в ней были произведены существенные доработки, протестированы уязвимости и исправлены некоторые ошибки. То же самое сейчас происходит и с Windows 8 – я пока окончательно не перешёл на эту систему и пользуюсь Windows 7, а Windows 8 обитает у меня на виртуальной машине. По сути, благодаря виртуальной машине на моём компьютере может быть одновременно запущено сразу несколько операционных систем, и на мой взгляд, это самая основная цель использования различных виртуальных машин.

Тестирование различных программ, которые по той или иной причине вы не хотите сразу устанавливать на ваш компьютер. Либо вы хотите выбрать из нескольких программ, у которых одинаковый функционал (например, аудио или видео проигрыватели), ту, которая вам больше понравится, но при этом вы не будете захламлять ваш компьютер лишними программами, а всего лишь испытаете их на виртуальной машине.

Запуск потенциально опасных программ. Например, при скачивании какой-либо программы ваш антивирус предположил, что она может быть потенциально вредоносна. Вы можете запустить её сначала на виртуальной машине, чтобы посмотреть, как она работает, и уже затем, если никаких подозрений она у вас не вызовет, можно будет установить её уже непосредственно на вашем компьютере.

Запуск программ, несовместимых с установленной на вашем компьютере операционной системой. Например, какая-то программа может не поддерживаться новыми версиями Windows, а вы уже привыкли работать в ней и она вам очень нужна. Предположим, программа не поддерживается версиями Windows 7 и выше, а работает только в Windows XP. Можно, конечно, в этом случае попробовать использовать режим эмуляции предыдущих версий Windows, но это не всегда срабатывает. Поэтому проще установить Windows XP на виртуальной машине и использовать вашу программу в ней. Ещё сложнее обстоят дела, если программа у вас создана для Linux. В этом случае также наличие виртуальной машины с установленной операционной системой Linux.

5.Parallels Desktop 14. VMware. VirtualBox.

4,5(29 оценок)
Это интересно:
Новые ответы от MOGZ: Информатика
logo
Вход Регистрация
Что ты хочешь узнать?
Спроси Mozg
Открыть лучший ответ