Что такое онлайн и офлайн вопросы на основе запросов в соревновательном программировании
Вопросы соревновательного программирования, основанные на запросах, в основном бывают двух типов:
- Автономный запрос.
- Онлайн запрос.
Автономный запрос
Автономный алгоритм позволяет нам манипулировать запрашиваемыми данными до того, как будет напечатан какой-либо ответ. Обычно это возможно только в том случае, если запросы не обновляют исходный набор элементов перед печатью результата.
Функции:
- Автономный запрос предлагает гораздо более широкий спектр использования по сравнению с онлайн-запросом.
- Они обеспечивают большее удобство использования и возможность настройки возвращаемых данных.
- Автономное решение сначала считывает все запросы и предварительно обрабатывает их (например, сортирует запросы для повышения эффективности дальнейшего процесса), а затем вычисляет и выводит ответ на каждый запрос в исходном заданном порядке.
- В автономном режиме все запросы представлены заранее.
- Проблемы легче решать в автономном режиме, поскольку можно изменить порядок запросов или работать над несколькими запросами одновременно.
- Сортировка запросов и исходных данных может помочь достичь большей эффективности O (N + Q) вместо эффективности O (N * Q), что часто встречается в случаях, когда сортировка невозможна, поскольку запросы продолжают поступать, как в случае онлайн-запросов. .
Одним из примеров автономного запроса является дерево сегментов.
Пример:
Given an array A[] = {2,3,5,6,7,9} and the task is to answer q queries for this array.
Each query contains two integers l and r and requires to output the sum of the array from l to r.
Необходимое условие для автономного запроса:
Этот прием можно использовать только тогда, когда ответ на один запрос не зависит от ответов на предыдущие запросы, так как после сортировки порядок запросов может измениться.
Когда использовать автономный запрос:
- Автономные запросы следует использовать для больших отчетов.
- Когда все запросы известны заранее.
Онлайн-запрос
Чтобы отвечать на запросы в порядке их появления, и вы не можете предварительно манипулировать запросами для эффективного подхода, такие запросы называются онлайн-запросами.
Функции:
- В таких запросах наши данные также могут обновляться.
- Ответ нельзя вычислить заранее.
- Ответ на один запрос также влияет на ответ на последующие запросы. Таким образом, каждый запрос отвечает один за другим.
- Онлайн-запросы будут предлагать ответ вскоре после запроса, что позволяет быстро решить запрос.
Пример:
Given an array A = {2,3,5,6,7,9} and the task is to answer q queries for this array.
Each query is of two types
- Update the ith index by A[i] = x
- Find sum from l to r
В этом примере после каждого запроса данные массива меняются. Таким образом, это не может быть решено методом автономного запроса.
Необходимое условие для онлайн-запроса:
Онлайн-запросы можно использовать только тогда, когда данные изменяются и когда сортировка невозможна из-за непрерывной потоковой передачи запросов.
Когда использовать онлайн-запрос:
- Онлайн-запросы следует использовать, когда необходимо запросить несколько транзакций в определенную дату и время.
- Их следует использовать, когда требуется быстро выполнять небольшие запросы.
Офлайн-запрос против онлайн-запроса
Ниже приведены некоторые различия между автономным запросом и онлайн-запросом:
| S № | Автономный запрос | Онлайн-запрос |
| 1 | Это позволяет манипулировать запрашиваемыми данными до того, как будет напечатан какой-либо ответ. | Запросы не могут быть обработаны заранее и отвечают на запросы в порядке их появления. |
| 2 | Автономные запросы возможны, когда запросы не обновляют исходный набор элементов перед печатью результата. | В онлайн-запросах набор данных также может обновляться. |
| 3 | Автономные запросы обеспечивают лучшую эффективность O(N + Q), поскольку сортировка запросов и исходных данных выполняется до вычисления результата. | В случае онлайн-запросов запросы продолжают течь, из-за чего сортировка запросов невозможна, а эффективность снижается до O (N * Q). |
| 4 | Автономные запросы следует использовать для больших отчетов. | Онлайн-запросы следует использовать, когда требуется быстро выполнить небольшие запросы. |
| 5 | В автономных запросах все запросы присутствуют заранее. | В онлайн-запросах запросы продолжают выполняться в потоковом режиме. |
| 6 | В автономном запросе ответ на один запрос не зависит от ответа на предыдущий запрос. | В онлайн-запросе ответ на один запрос влияет на ответ на последующие запросы. |