infoarena

infoarena - concursuri, probleme, evaluator, articole => Arhiva de probleme => Subiect creat de: ditzone din Martie 26, 2006, 18:33:37



Titlul: 202 Overlap
Scris de: ditzone din Martie 26, 2006, 18:33:37
Aici puteţi discuta despre problema Overlap (http://infoarena.ro/problema/overlap).


Titlul: 202 Overlap
Scris de: Paul-Dan Baltescu din Martie 30, 2006, 23:07:17
Eu nu ma prind de exemplu  :( . Poate cineva sa-mi spuna macar cat e k?


Titlul: 202 Overlap
Scris de: ditzone din Martie 30, 2006, 23:14:49
Rotesti cu 90 de grade(k=1). Astea sunt transformarile:
1 -> 5
4 -> 2
6 -> 3


Titlul: Raspuns: 202 Overlap
Scris de: Savin Tiberiu din Februarie 07, 2007, 13:04:00
deci iata cum rezolv eu problema: iau 2 vectori a si rot in care retin punctele initiale respectiv punctele rotite. initial ambii vectori contin aceleasi puncte. Parcurg vectoru a de la 2 ->n si atribui lui shx=rot[1].x-a[ i ].x si lui shy=rot[1].y-a[ i ].y; Apoi parcurg vectoru rot si caut cu ajutorul unui hashing dak am in vectoru a punctul   (x,y)  x=rot[j].x-shx; y=rot[j].y-shy;. Daca l-am gasit atunci marchez mul[j]=1 si mul[poz]=2 (poz - indicele pe care am gasit punctul (x,y)). Si imi continui parcurgerea fara a lua n considerare punctele deja puse in multime. Adik dak (mul[j]) trec mai departe fara a procesa punctul j. Akuma vine si intrebarea: De ce iau numai 20 de puncte?? Iau WA pe multe teste.