Afişează mesaje
|
Pagini: 1 2 [3]
|
56
|
infoarena - concursuri, probleme, evaluator, articole / Algoritmiada 2014 / Răspuns: Feedback Runda 2
|
: Februarie 10, 2014, 11:08:27
|
In caz ca unii dintre noi nu stiu hash sau notiunea de panta, la problema plagiat puteti folosi si urmatoarea abordare. Translatam fiecare punct in origine, si translatam celelalte puncte fata de acesta, si memoram astfel noile puncte obtinute. Practic , avand un punct (x,y) memorat, noi stim ca avem un segment de la (0,0) la (x,y). De asemenea, memoram pentru fiecare punct translatat, fata de ce punct l-am translatat.Acum, daca avem doua puncte (x1,y1) si (x2,y2) ambele apartinand la cel putin 2 origini diferite, inseamna ca avem solutie. Asta este echivalent cu a avea o pereche de segmente ((0,0) (x1,y1)) si ((0,0),(x2,y2)) ce le regasim in cel putin 2 translatii diferite, deci avem 2 triunghiuri din 2 translatii diferite identice.Acum, pentru a face acest lucru, sortam vectorul punctelor translatate (spre ex. intai dupa x apoi dupa y, conteaza mai putin) si pentru o secventa de puncte identice memoram ca avem o pereche de segmente comune pentru punctele de translatie i si j.Putem face asta cu o matrice m(i)(j)=cate segmente translatate au in comun punctele "de origine" i si j.Aparent abordarea pare un n^3, dar daca m(i)(j) devine 2 la un moment dat inseamna ca avem solutie. Astfel avem complexitate N^2 de la crearea punctelor, N^2log(N) de la sortare, si 2*(N^2) de la aflarea solutiei. Complexitate totala (N^2log(N)) . Nu contrazic cu nimic solutia oficiala, dar pentru participantii din grupe inferioare de varsta notiunea de panta si de hash pot parea straine.
|
|
|
60
|
Comunitate - feedback, proiecte si distractie / Implica-te! / Formatul trimiterii problemei
|
: Ianuarie 17, 2014, 19:47:37
|
Salutare! Cred ca majoritatea administratorilor stiu sistemul de submisie de pe Codeforces si alte siteuri.Ma refer la optiunea de a copia codul si de a-l trimite in loc de a selecta un fisier care sa contina sursa.Consider ca ar fi ceva mai lejer deoarece uneori pierdem ceva timp pentru a gasi sursa pe care am lucrat-o.Stiu ca aceasta idee nu este o necesitate, dar consider ca este o imbunatatire ( de asemenea, sa se pastreze si metoda cu "Alege fisierul" ) . Sper sa luati in considerare ceea ce am mentionat, si tineti-o tot asa deoarece site-ul devine din ce in ce mai bun .
|
|
|
63
|
infoarena - concursuri, probleme, evaluator, articole / Arhiva de probleme / Răspuns: 1438 Autobuze
|
: Noiembrie 19, 2013, 15:35:04
|
*SPOILER ALERT!*
Tii in hash toate numerele din vector cu pozitiile lor cu tot; Pe langa asta mai tii un vector unde marchezi daca o valoare se afla in vector,si inca un vector unde marchezi daca valoarea curenta ai gasit-o prin cea precedenta.Acum iei fiecare numar,si ii vezi multiplii;daca un multiplu se afla in multime il cauti in hash;dupa ce il gasesti faci muchie intre cele 2 pozitii din multime;apoi faci bfs ca sa vezi numarul componentelor conexe.
|
|
|
|