|
184 / 72 / 35
Регистрация: 09.05.2022
Сообщений: 387
|
||||||
Оптимизация кода по скорости работы20.04.2023, 09:42. Показов 744. Ответов 11
Метки нет (Все метки)
Условия задачи:
Набор в армию (тема: Дерево отрезков). Роберт Баратеон понимает, что войны с Таргариенами не избежать. Но сейчас зима, они не будут наступать, пока не начнется лето. Лето наступит через год, то есть через 366 дней – не так уж и много. Поэтому Роберт хочет успеть собрать себе за это время армию. У него есть n рыцарей, у рыцаря с номером i есть ai солдат в подчинении. Роберт отдал приказ своим рыцарям собирать больше солдат, и вечером каждого дня ему приходит донесение, которое имеет следующий вид: «Рыцари с номерами с l по r нашли себе еще по одному солдату». Также в любой момент времени Роберт может посмотреть на отряды солдат рыцарей с номерами с l по r и, исходя из этой информации, посчитать количество способов выбрать главнокомандующих у каждого из этих r - l + 1 отрядов солдат. Все солдаты в отрядах равноценно могут быть главнокомандующими, два способа считаются различными, если в них отличаются хотя бы два главнокомандующих. Число может получиться довольно большим, поэтому Роберт хочет знать только его остаток от деления на 1000003. Король Семи Королевств не силен в математике, поэтому он попросил Вас помочь ему в решении этой задачи. Формат входных данных Первая строка входного файла содержит число n (1 ≤ n ≤ 10^5) – количество рыцарей у Роберта. Вторая строка содержит n целых чисел ai (1 ≤ ai ≤ 10^9) – начальное количество солдат у i-го рыцаря. В третьей строке входного файла дано число q (1 ≤ q ≤ 10^5) – количество запросов. В следующих q строках входного файла описаны запросы. Каждый запрос описывается тремя числами a, l, r (0 ≤ a ≤ 1, 1 ≤ l ≤ r ≤ n). a = 0 означает увеличение количества солдат у всех рыцарей с номерами с l по r включительно на один. a=1 означает запрос на подсчет количества способов выбрать главнокомандующих у отрядов рыцарей с номерами c l по r включительно. Гарантируется, что донесение об увеличении количества солдат приносили Роберту на чаще одного раза в день, то есть не более 366 раз. Формат выходных данных На каждый запрос с a=1 в выходной файл выведите ответ на запрос. Пример: input.txt 5 1 2 3 4 5 6 1 1 5 0 3 3 0 2 4 1 1 3 1 1 4 1 1 5 output.txt 120 15 75 375 у меня есть программа, которая выдает runTimeError на некоторых данных, надо оптимизировать. Но как?
0
|
||||||
| 20.04.2023, 09:42 | |
|
Ответы с готовыми решениями:
11
Нужен совет: оптимизация кода, увеличение скорости работы скрипта Оптимизация скорости кода |
|
631 / 526 / 104
Регистрация: 05.08.2022
Сообщений: 2,810
|
|||||||
| 20.04.2023, 10:04 | |||||||
|
и на каких именно данных? хорошо бы вам взяться и проанализировать. Умозрительно заметил только вот что
Однако мы без проверки смело лезем в a[] до элемента l-1 Хорошо бы проверить корерктность входных данных тут
0
|
|||||||
|
184 / 72 / 35
Регистрация: 09.05.2022
Сообщений: 387
|
||
| 20.04.2023, 16:51 [ТС] | ||
|
0
|
||
| 20.04.2023, 16:54 | |
|
0
|
|
|
184 / 72 / 35
Регистрация: 09.05.2022
Сообщений: 387
|
|||
| 21.04.2023, 08:20 [ТС] | |||
|
0
|
|||
|
631 / 526 / 104
Регистрация: 05.08.2022
Сообщений: 2,810
|
|||
| 21.04.2023, 08:38 | |||
|
То что я писал в самом первом сообщении - сделано? Добавлено через 3 минуты одно только условие никто не станет дочитывать. Есть смысл приходить со здравыми, относительно кратко сформулированными запросами. А тут вникать разбираться, читать всю эту муть про рыцарей - кому надо. Добавлено через 36 секунд
0
|
|||
|
2318 / 1560 / 721
Регистрация: 17.03.2022
Сообщений: 5,018
|
|
| 21.04.2023, 11:30 | |
|
karlhildekruger, дурацкий вопрос - а вам обязательно юзать vector? Попробуйте вместо него сделать обычный динамический массив. Скорее всего, таким путем скорость удастся увеличить: STL - штука довольно медленная, а ее возможностями вы все равно фактически не пользуетесь.
1
|
|
|
фрилансер
6462 / 5670 / 1131
Регистрация: 11.10.2019
Сообщений: 15,096
|
||
| 21.04.2023, 11:50 | ||
|
1
|
||
|
2318 / 1560 / 721
Регистрация: 17.03.2022
Сообщений: 5,018
|
||
| 21.04.2023, 11:53 | ||
|
Во всяком случае, я бы попробовал. Тут цена вопроса - замена буквально одной строки кода.
0
|
||
|
фрилансер
6462 / 5670 / 1131
Регистрация: 11.10.2019
Сообщений: 15,096
|
|
| 21.04.2023, 11:55 | |
|
я бы лучше попробовал чтение файла произвести до цикла - в тот же вектор. Потом работаем с содержимым вектора и формируем вектор для записи в файл. Затем, после цикла, пишем в файл
0
|
|
|
118 / 86 / 35
Регистрация: 07.11.2022
Сообщений: 355
|
|
| 21.04.2023, 11:56 | |
|
в задаче у вектора только доступ по индексу, и тип int
так что разницы никакой.
0
|
|
|
фрилансер
6462 / 5670 / 1131
Регистрация: 11.10.2019
Сообщений: 15,096
|
||||||||||||||||||||
| 21.04.2023, 11:59 | ||||||||||||||||||||
|
ну и вот это сделать одним действием
Добавлено через 59 секунд операторе [] - не тратится
1
|
||||||||||||||||||||
| 21.04.2023, 11:59 | |
|
Помогаю со студенческими работами здесь
12
Оптимизация кода по скорости
Оптимизация кода по скорости (K1986BE92QI Keil) Оптимизация скорости работы с БД (ADO, DataEnvironment) Оптимизация кода для повышения скорости выполнения? Искать еще темы с ответами Или воспользуйтесь поиском по форуму: |
|
Новые блоги и статьи
|
|||
|
SDL3 для Desktop (MinGW): Создаём пустое окно с нуля для 2D-графики на SDL3, Си и C++
8Observer8 10.03.2026
Содержание блога
Финальные проекты на Си и на C++:
hello-sdl3-c. zip
hello-sdl3-cpp. zip
Результат:
|
Установка CMake и MinGW 13.1 для сборки С и C++ приложений из консоли и из Qt Creator в EXE
8Observer8 10.03.2026
Содержание блога
MinGW - это коллекция инструментов для сборки приложений в EXE. CMake - это система сборки приложений. Здесь описаны базовые шаги для старта программирования с помощью CMake и. . .
|
Как дизайн сайта влияет на конверсию: 7 решений, которые реально повышают заявки
Neotwalker 08.03.2026
Многие до сих пор воспринимают дизайн сайта как “красивую оболочку”. На практике всё иначе: дизайн напрямую влияет на то, оставит человек заявку или уйдёт через несколько секунд.
Даже если у вас. . .
|
Модульная разработка через nuget packages
DevAlt 07.03.2026
Сложившийся в . Net-среде способ разработки чаще всего предполагает
монорепозиторий в котором находятся все исходники.
При создании нового решения, мы просто добавляем нужные проекты
и имеем. . .
|
|
Модульный подход на примере F#
DevAlt 06.03.2026
В блоге дяди Боба наткнулся на такое определение:
В этой книге («Подход, основанный на вариантах использования») Ивар утверждает,
что архитектура программного обеспечения — это
структуры,. . .
|
Управление камерой с помощью скрипта OrbitControls.js на Three.js: Вращение, зум и панорамирование
8Observer8 05.03.2026
Содержание блога
Финальная демка в браузере работает на Desktop и мобильных браузерах. Итоговый код: orbit-controls-threejs-js. zip. Сканируйте QR-код на мобильном. Вращайте камеру одним пальцем,. . .
|
SDL3 для Web (WebAssembly): Синхронизация спрайтов SDL3 и тел Box2D
8Observer8 04.03.2026
Содержание блога
Финальная демка в браузере. Итоговый код: finish-sync-physics-sprites-sdl3-c. zip
На первой гифке отладочные линии отключены, а на второй включены:. . .
|
SDL3 для Web (WebAssembly): Идентификация объектов на Box2D v3 - использование userData и событий коллизий
8Observer8 02.03.2026
Содержание блога
Финальная демка в браузере. Итоговый код: finish-collision-events-sdl3-c. zip Сканируйте QR-код на мобильном и вы увидите, что появится джойстик для управления главным героем.
. . .
|