Строковый запрос с двоичным индексированным деревом

Я хочу, чтобы диапазон запроса строки с использованием дерева Фенвика. Но что-то не так с моим кодом.
Конкатенация дает ошибку
Ошибка: [Ошибка] не соответствует ‘operator + =’ (типы операндов ‘std :: vector>’ и ‘std :: string {aka std :: basic_string}’)
Учитывая строку s, я хочу сохранить строку в этом дереве fenwick.
например s = abcdef, на BIT он должен (сверху вниз) как ab-c abcd-e abcd-ef
Древовидная структура

vector<string> BIT[100005];
int n;
void BI(int x,string c)
{
for(;x<=n;x+=x&-x)
{
BIT[x]+=c;
}

}

int main()
{
cin>>n;
string s;
for(int i=1;i<=n;i++)
{   cin>>s;
BI(i,s);
}

}

-1

Решение

это

vector<string> BIT[100005];

и это

BIT[x]+=c;

не ходи вместе. У вас есть массив векторов строк (в основном, двумерная матрица). И вы пытаетесь добавить строку c к вектору в BIT[x], Ваши ошибки компиляции должны сообщать вам об этом.

Вы, вероятно, не хотели создавать массив векторных строк. Чтобы сделать вектор строк размером 100005, сделайте это:

vector<string> BIT(100005);

то есть круглые скобки, а не квадратные скобки.

1

Другие решения

Других решений пока нет …

По вопросам рекламы ammmcru@yandex.ru
Adblock
detector