Titlul: O problema cu maxim Scris de: Lup Vasile din Noiembrie 13, 2013, 09:37:58 Se da un vector de lungime n. Se dau operatii de doua tipuri: 0 a b x (valoarea tuturor numerelor de la v[a] la v este crescuta cu x) si 1 a b (se cere afisarea maximului din subsecventa v[a]..v). In fisierul de intrare sunt date mai multe operatii de acest gen. Imi spuneti va rog cum se rezolva aceasta problema? Multunesc.
Titlul: Răspuns: O problema cu maxim Scris de: Dospra Cristian din Noiembrie 13, 2013, 10:11:53 Asta e solutia bruta:
Cod: #include <fstream> problema se poate rezolva cu metode mai elegante dar daca tie iti trebuie pur si simplu o rezolvare... asta e ok. daca nu intelegi ceva spune-mi te rog :D Titlul: Răspuns: O problema cu maxim Scris de: Lup Vasile din Noiembrie 13, 2013, 11:01:49 Iti multumesc. Stiu ca nu am precizat, dar as avea nevoie de cea mai eficienta metoda, o(n^2) e cam mare...
Titlul: Răspuns: O problema cu maxim Scris de: George Marcus din Noiembrie 13, 2013, 11:05:05 Merge cu arbori de intervale in O(MlogN), unde M = numarul de operatii.
Titlul: Răspuns: O problema cu maxim Scris de: Dospra Cristian din Noiembrie 13, 2013, 11:09:50 Din pacate nu am timp acum sa implementez cealalta varianta pt ca sunt pe fuga. Poti folosi smenul lui Mars pentru incrementarea valorilor de la a la b cu x si iti poti tine o matrice cu maxime (mat[j]=maximul de la pozitia i la pozitia j in vectorul v) si iti reduce complexitate f mult. Sper ca ai inteles :D
Titlul: Răspuns: O problema cu maxim Scris de: Lup Vasile din Noiembrie 13, 2013, 11:19:24 Arborii de intervale nu ii stiu....
Nu pot sa imi declar matricea de maxime pentru ca n poate fi mare si matricea ar ocupa prea mult. Iar in legatura cu Mars, pentru a afla valorile la un moment dat, nu trebuie sa parcurg tot vectorul pana pozitia dorita? Titlul: Răspuns: O problema cu maxim Scris de: George Marcus din Noiembrie 13, 2013, 11:26:59 Ce te opreste sa inveti arborii?
Si da, la Mars operatia 0 ia O(1) si operatia 1 O(N). |