infoarena

infoarena - concursuri, probleme, evaluator, articole => Arhiva de probleme => Subiect creat de: Adrian Diaconu din Decembrie 01, 2008, 13:24:16



Titlul: 344 Drept
Scris de: Adrian Diaconu din Decembrie 01, 2008, 13:24:16
Aici puteti discuta despre problema Drept (http://infoarena.ro/problema/drept).


Titlul: Răspuns: 344 Drept
Scris de: Andrei Misarca din Decembrie 01, 2008, 22:53:29
Care este complexitatea oficiala ca O(N^3 logN) cam iese din timp :D


Titlul: Răspuns: 344 Drept
Scris de: Andrei Grigorean din Decembrie 01, 2008, 23:01:28
O(N^3) optimizat e complexitatea oficiala.


Titlul: Răspuns: 344 Drept
Scris de: Andrei Misarca din Decembrie 01, 2008, 23:04:57
Un hint pt N^3 pls.. :)


Titlul: Răspuns: 344 Drept
Scris de: Stefan-Alexandru Filip din Decembrie 01, 2008, 23:19:14
Un hint pt N^3 pls.. :)
Fixezi x1, x2 proiectiile pe axa OX ale laturilor paralele cu OY ale dreptunghiului. Pentru ele tii sortate valorile coordonatelor y ale punctelor cu x intre x1 si x2. Dreptunghiurile cu k puncte se pot determina printr-o simpla iteratie.
Eu am implementat problema cu arbori echilibrati, complexitate O(N2logN + N3), dar merge prea incet. Optimizarea e cheia problemei.


Titlul: Răspuns: 344 Drept
Scris de: Andrei Misarca din Decembrie 01, 2008, 23:25:53
Fixezi x1, x2 proiectiile pe axa OX ale laturilor paralele cu OY ale dreptunghiului. Pentru ele tii sortate valorile coordonatelor y ale punctelor cu x intre x1 si x2. Dreptunghiurile cu k puncte se pot determina printr-o simpla iteratie.
Asta fac si eu, dar pentru fiecare pereche x1 si x2 trebuie facuta acea sortare daca am inteles bine. Dar, de aici rezulta o complexitate de O(N^2 (pt ca iau fiecare pereche) * NlogN(din sortare)) = O(N^3logN)


Titlul: Răspuns: 344 Drept
Scris de: Stefan-Alexandru Filip din Decembrie 01, 2008, 23:34:35
Fixezi x1, x2 proiectiile pe axa OX ale laturilor paralele cu OY ale dreptunghiului. Pentru ele tii sortate valorile coordonatelor y ale punctelor cu x intre x1 si x2. Dreptunghiurile cu k puncte se pot determina printr-o simpla iteratie.
Asta fac si eu, dar pentru fiecare pereche x1 si x2 trebuie facuta acea sortare daca am inteles bine. Dar, de aici rezulta o complexitate de O(N^2 (pt ca iau fiecare pereche) * NlogN(din sortare)) = O(N^3logN)
Ideea e sa o rezolvi fara sa sortezi in O(NlogN). Cand treci de la (xi, xj) la (xi, xj+1) trebuie sa inserezi intr-un sir sortat valorile coordonatelor y pentru care x=xj+1. Daca ai si aceste ultime valori sortate, atunci interclasarea lor se face in O(N).


Titlul: Răspuns: 344 Drept
Scris de: Savin Tiberiu din Decembrie 02, 2008, 00:26:21
da cu ideea asta am luat si eu 100, si tocmai din acest motiv nu mi-a placut problema. Adica cand vezi N <= 1000 si scoti o solutie N^3 atat de simpla nu prea iti vine sa crezi ca o sa intre in timp, si iti storci creieri sa scoti mai bine, si pana la urma bagi o sursa ca te gandesti ca mai scoti niste puncte si te trezesti cu 100 de puncte.


Titlul: Răspuns: 344 Drept
Scris de: Andrei Misarca din Decembrie 02, 2008, 19:58:58
Mi-a iesit pana la urma  :yahoo: Mersi fain :D