Afişează mesaje
|
Pagini: 1 2 [3] 4 5 ... 25
|
54
|
Comunitate - feedback, proiecte si distractie / Off topic / Răspuns: Ubuntu 10.04
|
: Mai 07, 2010, 21:56:40
|
Eu am HD 3470 si merge bine fara Compiz activat. Si cu Compiz merge, dar chiar nu dau cele 2 sec care imi trebuie la Window Restore pe niste ferestre care unduiesc sau ard sau mai fac eu stiu ce... Foloseste driverul normal (vesa? parca asa ii zicea, acum imi scapa) in loc de ati/fglrx si nu ar trebui sa ai probleme...
|
|
|
72
|
infoarena - concursuri, probleme, evaluator, articole / Arhiva educationala / Răspuns: 029 Infasuratoare convexa
|
: Ianuarie 28, 2010, 19:15:35
|
Functia ta e exact ca a mea... Dar nush cum ai luat 100, probabil ca ai luat ref un punct random din cele ale poligonului,dar daca se dadeau puncte astfel incat sa fie coliniare 3 cate 3 nu mai mergea.
Nu vor exista puncte coliniare pe infasuratoarea conexa. Asa am luat 100 la problema din arhiva educationala. Mai pe scurt am luat un punct in interiorul poligonului si am sortat varfurile in jurul acelui punct. Ce ar fi gresit? Am folosit aceeasi functie de sortare.
Nu poti face asta in Scanarea Graham. Trebuie sa incepi cu un punct care este obligatoriu pe infasuratoarea convexa si poti fii sigur ca cel mai din jos-stanga se afla acolo. La fel si cu sus-dreapta. In principiu primul punct nu poate fi scos din stiva si de aceea nu poti sa il folosesti pe unul din interiorul poligonului (asigura-te ca stapanesti modul de functionare al algoritmului ).
|
|
|
73
|
infoarena - concursuri, probleme, evaluator, articole / Arhiva educationala / Răspuns: 029 Infasuratoare convexa
|
: Ianuarie 27, 2010, 13:37:28
|
LE: faza cu distanta nu merge fiindca pentru punctele de jos coliniare imi trebuie sortate in ordine crescatoare(in functie de distanta) iar cele de pe verticala in ordine descrescatoare:D
Nu cred ca e vorba de "pe verticala" ci "punctele de pe ultima latura a poligonului", fie ea verticala sau nu. Cat despre sortare in sens trigonometric in jurul unui punct "ref": 30.bool comp(point A, point B) { 31. double dx1 = A.x-ref.x, dx2 = B.x-ref.x; 32. double dy1 = A.y-ref.y, dy2 = B.y-ref.y; 33. return dx1*dy2 > dx2*dy1; // varianta: return atan2(dy1,dx1) > atan2(dy2,dx2); 34.}
Functia asta poate fi folosita cu sort() din STL. Codul l-am luat din sursa mea de la problema din arhiva, dar cred ca din orice sursa de 100 poti invata cate ceva
|
|
|
74
|
infoarena - concursuri, probleme, evaluator, articole / Arhiva educationala / Răspuns: 029 Infasuratoare convexa
|
: Ianuarie 27, 2010, 10:55:13
|
Ce algoritm folosesti?
In cazul algoritmului care se foloseste de o stiva (parca se numea scanare Graham), nu conteaza foarte mult daca mergi trigonometric sau nu. In acea functie de testare de "intoarcere la stanga/dreapta" (pe care o faci cu produs vectorial) doar schimbi sensul unei inegalitati. Totusi, cred ca nu exista o "regula" pentru ce vrei tu, ar trebui facuta o tratare separata. Poti insa in caz de puncte coliniare pe laturi sa le iei doar pe cele mai departate (capetele practic) in infasuratoare si atunci cand sortezi trigonometric (sau in sens invers) mai folosesti si un test de "distanta" (punctele cele mai departate de punctul de referinta sa fie primele). Sper sa nu ma insel...
|
|
|
|