Diferente pentru monthly-2014/runda-5/solutii intre reviziile #9 si #8

Nu exista diferente intre titluri.

Diferente intre continut:

h1. 'Autobuze2':problema/autobuze2
* $Se garantează că între oricare două staţii consecutive din traseul unui autobuz există o stradă directă.$
 
* $Se garantează că între A ~Ki~ şi A ~1~ există o stradă directă, pentru orice i, 1 ≤ i ≤ B.$
 
Având în vedere precizările din enunţul problemei, putem crea un nou graf care folosindu-ne doar de staţiile prin care trece fiecare autobuz. Cum traseul parcurs de un autobuz este: A ~1~, A ~2~, ..., A ~K~, A ~1~, A ~2~, etc., vom conecta între ele oricare două staţii consecutive din acest traseu printr-o muchie în noul graf. Vrem să pornim din nodul $1$ şi să ajungem în nodul $N$, deci vom porni o 'parcurgere în lăţime':problema/bfs din nodul $1$, ţinând pentru fiecare nod $i$ parcurs până acum:
 
* $d[i] = numarul de noduri (staţii) parcurse din nodul 1 pana in nodul i$
 
Răspunsul se va găsi în $d[N]$. Dacă nu am putut ajunge în nodul $N$, îl vom încuraja pe Antonio să o invite pe Antonia la un suc.
 
h1. 'Litere2':problema/litere2
* Două cuvinte fac parte din acelaşi grup dacă sunt formate din aceleaşi litere, repetate de oricâte ori.
h1. 'Treesmen':problema/treesmen
Vom face o liniarizare a arborelui, cu ajutorul căreia vom efectua eficient cele două operaţii. Soluţia se bazează pe prima idee care ne vine în minte, adică, pentru prima operaţie facem update pe intervalul $[first[stramos], first[node]]$ si pentru a doua căutam ce valoare avem pe poziţia $first[node]$; dar, s-ar putea, ca la update să avem noduri care nu se află pe lanţ dar apar şi în interval. Plecând de la această observaţie ajungem la observaţia : aceste noduri vor avea $first-ul si last-ul$ incluse în $[first[stramos], first[node]]$. Astfel putem defini în $last[node] = suma valorilor când node nu a apare pe lanţ.$ Făcând această observaţie răspunsul pentru un query va fi $first[node] - last[node]$. Update-ul e o progresie arimetica, aşa că, nodul X o să crească cu valoarea $p + (nivel[X] - nivel[stramos])*r.$ Dacă desfacem paranteza si grupam termenii convenabil obtinem $p-nivel[stramos]*r + nivel[X]*r$. Astfel, problema devine la a face update pe un interval cu o valoare X; ne putem folosi de arbori de intervale sau arbori indexati binar.
Complexitate $O(M * log N).$
==include(page="template/monthly-2014/footer")==

Nu exista diferente intre securitate.

Topicul de forum nu a fost schimbat.