Вопрос 2. Файл размером 24 Кбайт передается через некоторое соединение со скоростью 2048 бит в секунду. Определите размер файла (в Кбайтах), который можно передать за то же время через другое соединение со скоростью 512 бит в секунду. *
Дерево Фенвика для массива A можно себе представлять так, как изображено на прикрепленном рисунке. В вершине, помеченной числом i, хранится сумма A[i] и всех элементов массива A с индексами, которые записаны в левом поддереве вершины i. Например, Fenwick[11] = A[8] + A[9] + A[10] + A[11]. Дерево Фенвика устроено так, чтобы в каждой вершине Fenwick[n] хранилась сумма отрезка массива от некоторого F(n) до n, нужно сообразить, чему равно F(n). F(n) получается, если идти по дереву в левые поддеревья, пока не наткнёмся на лист, он помечен чётным числом. Если двоичная запись числа n оканчивается на k единиц, то в F(n) эти k единиц заменены на нули.
Пусть нужно вычислить сумму префикса A[0..n], например, n = 9. Глядя на дерево, можно сообразить, что эта сумма равна (A[0] + A[1] + ... + A[7]) + (A[8] + A[9)) = Fenwick[7] + Fenwick[9]. В такой сумме обязательно есть Fenwick[n]: A[0] + A[1] + ... + A[n] = (A[0] + ... + A[F(n) - 1]) + (A[F(n)] + ... + A[n]) = (A[0] + ... + A[F(n) - 1]) + Fenwick[n]. Сумму в скобках тоже можно представить в виде суммы Fenwick[...].
Обновление значения A[n] приводит к обновлению некоторых Fenwick[k], а именно, Fenwick[n], и затем всех вершин-родителей, для которых текущая вершина является левым потомком. Например, чтобы обновить A[9], придется обновить Fenwick[9] и Fenwick[11]. Посчитано, что если текущая вершина имеет номер k, то следующая имеет номер k | (k + 1), и так далее, пока не кончатся вершины.
Высота дерева O(log n), так что операции нахождения суммы и обновления элементов работают за O(log n).
Якось одного прекрасного ранку, хлопчик на ім'я Сашко, в перший раз пішов у школу. Все було так гарно, але на наступний день почалися вже уроки. Сашко раненько встав, почистив зуби, поїв і пішов у школу. Прийшов він школу, починає гратися з однокласниками, а тут вже дзвінок продзвенів. Діти забігли у клас, а вчитель каже: - Доброго ранку, діти! Сьогодні ваш перший урок буде Інформатика. Тоді Сашко про себе казав: - Напевно буде дуже цікаво. Тоді вчителька з дітьми пішла до кабінету Інформатики.. А там тільки комп'ютери. - Ого-го! - сказав Сашко. Після уроку Інформатики, всім дітям так сподобалося, аж кричали: - Це наш улюблений урок! Тоді у Сашко з'явився перший улюблений урок!
Дерево Фенвика для массива A можно себе представлять так, как изображено на прикрепленном рисунке. В вершине, помеченной числом i, хранится сумма A[i] и всех элементов массива A с индексами, которые записаны в левом поддереве вершины i. Например, Fenwick[11] = A[8] + A[9] + A[10] + A[11]. Дерево Фенвика устроено так, чтобы в каждой вершине Fenwick[n] хранилась сумма отрезка массива от некоторого F(n) до n, нужно сообразить, чему равно F(n). F(n) получается, если идти по дереву в левые поддеревья, пока не наткнёмся на лист, он помечен чётным числом. Если двоичная запись числа n оканчивается на k единиц, то в F(n) эти k единиц заменены на нули.
Пусть нужно вычислить сумму префикса A[0..n], например, n = 9. Глядя на дерево, можно сообразить, что эта сумма равна (A[0] + A[1] + ... + A[7]) + (A[8] + A[9)) = Fenwick[7] + Fenwick[9]. В такой сумме обязательно есть Fenwick[n]: A[0] + A[1] + ... + A[n] = (A[0] + ... + A[F(n) - 1]) + (A[F(n)] + ... + A[n]) = (A[0] + ... + A[F(n) - 1]) + Fenwick[n]. Сумму в скобках тоже можно представить в виде суммы Fenwick[...].
Обновление значения A[n] приводит к обновлению некоторых Fenwick[k], а именно, Fenwick[n], и затем всех вершин-родителей, для которых текущая вершина является левым потомком. Например, чтобы обновить A[9], придется обновить Fenwick[9] и Fenwick[11]. Посчитано, что если текущая вершина имеет номер k, то следующая имеет номер k | (k + 1), и так далее, пока не кончатся вершины.
Высота дерева O(log n), так что операции нахождения суммы и обновления элементов работают за O(log n).
Якось одного прекрасного ранку, хлопчик на ім'я Сашко, в перший раз пішов у школу. Все було так гарно, але на наступний день почалися вже уроки. Сашко раненько встав, почистив зуби, поїв і пішов у школу. Прийшов він школу, починає гратися з однокласниками, а тут вже дзвінок продзвенів. Діти забігли у клас, а вчитель каже: - Доброго ранку, діти! Сьогодні ваш перший урок буде Інформатика. Тоді Сашко про себе казав: - Напевно буде дуже цікаво. Тоді вчителька з дітьми пішла до кабінету Інформатики.. А там тільки комп'ютери. - Ого-го! - сказав Сашко. Після уроку Інформатики, всім дітям так сподобалося, аж кричали: - Це наш улюблений урок! Тоді у Сашко з'явився перший улюблений урок!