Что такое онлайн и офлайн вопросы на основе запросов в соревновательном программировании

Опубликовано: 19 Сентября, 2022

Вопросы соревновательного программирования, основанные на запросах, в основном бывают двух типов:

  1. Автономный запрос.
  2. Онлайн запрос.

Автономный запрос

Автономный алгоритм позволяет нам манипулировать запрашиваемыми данными до того, как будет напечатан какой-либо ответ. Обычно это возможно только в том случае, если запросы не обновляют исходный набор элементов перед печатью результата.

Функции:

  1. Автономный запрос предлагает гораздо более широкий спектр использования по сравнению с онлайн-запросом.
  2. Они обеспечивают большее удобство использования и возможность настройки возвращаемых данных.
  3. Автономное решение сначала считывает все запросы и предварительно обрабатывает их (например, сортирует запросы для повышения эффективности дальнейшего процесса), а затем вычисляет и выводит ответ на каждый запрос в исходном заданном порядке.
  4. В автономном режиме все запросы представлены заранее.
  5. Проблемы легче решать в автономном режиме, поскольку можно изменить порядок запросов или работать над несколькими запросами одновременно.
  6. Сортировка запросов и исходных данных может помочь достичь большей эффективности 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.

Необходимое условие для автономного запроса:

Этот прием можно использовать только тогда, когда ответ на один запрос не зависит от ответов на предыдущие запросы, так как после сортировки порядок запросов может измениться.

Когда использовать автономный запрос:

  1. Автономные запросы следует использовать для больших отчетов.
  2. Когда все запросы известны заранее.

Онлайн-запрос

Чтобы отвечать на запросы в порядке их появления, и вы не можете предварительно манипулировать запросами для эффективного подхода, такие запросы называются онлайн-запросами.

Функции:

  1. В таких запросах наши данные также могут обновляться.
  2. Ответ нельзя вычислить заранее.
  3. Ответ на один запрос также влияет на ответ на последующие запросы. Таким образом, каждый запрос отвечает один за другим.
  4. Онлайн-запросы будут предлагать ответ вскоре после запроса, что позволяет быстро решить запрос.

Пример:

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

  1. Update the ith index by A[i] = x 
  2. Find sum from l to r

В этом примере после каждого запроса данные массива меняются. Таким образом, это не может быть решено методом автономного запроса.

Необходимое условие для онлайн-запроса:

Онлайн-запросы можно использовать только тогда, когда данные изменяются и когда сортировка невозможна из-за непрерывной потоковой передачи запросов.

Когда использовать онлайн-запрос:

  1. Онлайн-запросы следует использовать, когда необходимо запросить несколько транзакций в определенную дату и время.
  2. Их следует использовать, когда требуется быстро выполнять небольшие запросы.

Офлайн-запрос против онлайн-запроса

Ниже приведены некоторые различия между автономным запросом и онлайн-запросом:

S № Автономный запрос Онлайн-запрос
1 Это позволяет манипулировать запрашиваемыми данными до того, как будет напечатан какой-либо ответ. Запросы не могут быть обработаны заранее и отвечают на запросы в порядке их появления.
2 Автономные запросы возможны, когда запросы не обновляют исходный набор элементов перед печатью результата. В онлайн-запросах набор данных также может обновляться.
3 Автономные запросы обеспечивают лучшую эффективность O(N + Q), поскольку сортировка запросов и исходных данных выполняется до вычисления результата. В случае онлайн-запросов запросы продолжают течь, из-за чего сортировка запросов невозможна, а эффективность снижается до O (N * Q).
4 Автономные запросы следует использовать для больших отчетов. Онлайн-запросы следует использовать, когда требуется быстро выполнить небольшие запросы.
5 В автономных запросах все запросы присутствуют заранее. В онлайн-запросах запросы продолжают выполняться в потоковом режиме.
6 В автономном запросе ответ на один запрос не зависит от ответа на предыдущий запрос. В онлайн-запросе ответ на один запрос влияет на ответ на последующие запросы.