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

Можете мне объяснить как работает дерево фенвика? написать его я могу, однако так и не разобрался почему и как оно работает.

👇
Ответ:
Мари7890
Мари7890
10.02.2020

Дерево Фенвика для массива 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).


Можете мне объяснить как работает дерево фенвика? написать его я могу, однако так и не разобрался по
4,8(89 оценок)
Открыть все ответы
Ответ:
nazi33
nazi33
10.02.2020
#include <iostream>
#include <string>
using namespace std;

string arabicToRoman(unsigned &number)
{
const unsigned count = 13;unsigned arabic[count] = { 1000, 900, 500, 400, 100, 90, 50, 40, 10, 9, 5, 4, 1
}, i, j;
string roman[count] = { "M", "CM", "D", "CD", "C", "XC", "L", "XL", "X", "IX",
"V", "IV", "I" }, result = "";
for (i = 0; i < count; i++) {
for (j = 0; j < number / arabic[i]; j++) {
result += roman[i];
}
number %= arabic[i];
}
return result;
}

int main()
{
unsigned uin = 0;
cin >> uin;
cout << arabicToRoman(uin);
system("pause");
return 0;
}
4,5(38 оценок)
Ответ:
dianaterpil30031
dianaterpil30031
10.02.2020

Огромные барьеры, которые создали люди, останавливают поток воды, льющийся на город.Огромные барьеры, которые создали люди, останавливают поток воды, льющийся на город.Огромные барьеры, которые создали люди, останавливают поток воды, льющийся на город.Огромные барьеры, которые создали люди, останавливают поток воды, льющийся на город.Огромные барьеры, которые создали люди, останавливают поток воды, льющийся на город.Огромные барьеры, которые создали люди, останавливают поток воды, льющийся на город.Огромные барьеры, которые создали люди, останавливают поток воды, льющийся на город.Здравствуйте! Я сегодня отдала учебники, литературу мы теперь не должны, но должны ещё один казахский язык.Здравствуйте! Я сегодня отдала учебники, литературу мы теперь не должны, но должны ещё один казахский язык.Здравствуйте! Я сегодня отдала учебники, литературу мы теперь не должны, но должны ещё один казахский язык.Здравствуйте! Я сегодня отдала учебники, литературу мы теперь не должны, но должны ещё один казахский язык.Здравствуйте! Я сегодня отдала учебники, литературу мы теперь не должны, но должны ещё один казахский язык.Здравствуйте! Я сегодня отдала учебники, литературу мы теперь не должны, но должны ещё один казахский язык.Здравствуйте! Я сегодня отдала учебники, литературу мы теперь не должны, но должны ещё один казахский язык.Здравствуйте! Я сегодня отдала учебники, литературу мы теперь не должны, но должны ещё один казахский язык.Здравствуйте! Я сегодня отдала учебники, литературу мы теперь не должны, но должны ещё один казахский язык.Здравствуйте! Я сегодня отдала учебники, литературу мы теперь не должны, но должны ещё один казахский язык.Здравствуйте! Я сегодня отдала учебники, литературу мы теперь не должны, но должны ещё один казахский язык.

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