Drzewko przedziałowe (przedział-przedział)

0

Z tego linku http://www.mimuw.edu.pl/~cygan/wyklady/wyklad2.html próbuje zaimplementować wstawianie do przedziału i wyciąganie z niego maksa. Robię tak jak tam opisane i coś nie do końca mi to wychodzi dlatego chcę rozwiązać kilka nieścisłości. Chodzi mi o ten fragment.

    *  wynik([a,b]) = w[v/2] + w[v/4] + ... + w[root] + W[v], gdzie dzielenie przez dwa jest całkowitoliczbowe i odpowiada przejściu do ojca węzła w drzewie,
    * W[v] = w[v] + max(W[2*v], W[2*v + 1]); oczywiście dla liści W[v] = w[v].

void insert([a, b], c) {
  rozłóż przedział [a, b] na przedziały bazowe (robimy to jak poprzednio);
  powiększ wartość w dla wszystkich tych przedziałów bazowych o c;
  zaktualizuj wartości W dla wszystkich napotkanych po drodze węzłów:
    bazowych i na ścieżkach do korzenia
  za pomocą zależności rekurencyjnej na W;
}

int query([a, b]) {
  rozłóż przedział [a, b] na przedziały bazowe;
  policz wynik dla każdego z tych przedziałów za pomocą równości na wynik
    uwaga: oczywiście sum wartości w na ścieżkach do korzenia nie liczymy
           za każdym razem od zera, tylko je spamiętujemy po drodze;
  return maksimum z tych wyników częściowych;
}

W insercie dla przedziału [1, 5] w aktualizuje dla czerwonych kółek ? A W duże dla niebieskich ?
W query dla tego samego przedziału wynik liczę dla scieżek tylko dla czerwonych ?

A dla przedziału [1,3]
W insercie w aktualizuje dla zielonych kółek ? A W duże dla fioletowych ?
W query dla tego samego przedziału wynik liczę dla scieżek tylko dla zielonych ?

Tu jest właśnie mój kod dla zadania "koleje" gdzie jest to drzewo http://wklej.org/id/31956/ u mnie w-moc W-smoc

user imageuser image

0

Ja to już kiedyś zaimplementowałem.

Wydaje mi się, że dobrze to rozrysowałeś. Najwidoczniej jakiś błąd w kodzie - nietrudno o to przy takim zadaniu.

0

Właśnie szukam błędu w kodzie kilka dni i nic :-( Testowałem go wcześniej na MAINIE i przechodził połowę testów dla tego zadania "Koleje", więc błąd jest raczej niewielki. Jakby ktoś miał troszeczkę czasu i lookną w kod, nie jest on długi i w miarę czytelnie napisany, to byłbym wdzięczny.

1 użytkowników online, w tym zalogowanych: 0, gości: 1