Pagini recente » Diferente pentru utilizator/valen.valentin intre reviziile 40 si 44 | Diferente pentru problema/arcas intre reviziile 6 si 7 | Atasamentele paginii taristraine | Monitorul de evaluare | Diferente pentru multe-smenuri-de-programare-in-cc-si-nu-numai intre reviziile 33 si 34
Nu exista diferente intre titluri.
Diferente intre continut:
h2. "Smenul lui Mars" (Marius Andrei)
Consideram urmatoarea problema: se da un vector $A$ de $N$ elemente pe care se fac $M$ astfel de operatii: {@ADUNA(st, dr, x)@} - toate elementele cu indicii intre $st$ si $dr$ isi cresc valoarea cu {$x$}. La sfarsit trebuie sa se afiseze vectorul rezultat. In continuarea vom descrie o metoda care ne da un timp de rulare de $O(1)$ pentru operatia $ADUNA$ si $O(N)$ pentru a determina toate elementele din vector. Vom construi un al doilea vector $B$ de $N+1$ elemente, cu proprietatea ca {$A{~i~} = B{~0~} + B{~1~} + ... B{~i~}$}. Astfel, o operatie {@ADUNA(st, dr, x)@} devine:
Consideram urmatoarea problema: se da un vector $A$ de $N$ elemente pe care se fac $M$ astfel de operatii: {@ADUNA(st, dr, x)@} - toate elementele cu indicii intre $st$ si $dr$ ({$0 ≤ st ≤ dr < N$}) isi cresc valoarea cu {$x$} . La sfarsit trebuie sa se afiseze vectorul rezultat. In continuarea vom descrie o metoda care ne da un timp de rulare de $O(1)$ pentru operatia $ADUNA$ si $O(N)$ pentru a determina toate elementele din vector. Vom construi un al doilea vector $B$ de $N+1$ elemente, cu proprietatea ca {$A{~i~} = B{~0~} + B{~1~} + ... B{~i~}$}. Astfel, o operatie {@ADUNA(st, dr, x)@} devine:
== code(c) |B[st] += x;
B[dr + 1] -= x;
Nu exista diferente intre securitate.
Topicul de forum nu a fost schimbat.