Pagini: [1]   În jos
  Imprimă  
Ajutor Subiect: 112 Arie  (Citit de 6073 ori)
0 Utilizatori şi 1 Vizitator pe acest subiect.
domino
Echipa infoarena
Nu mai tace
*****

Karma: 281
Deconectat Deconectat

Mesaje: 1.340



Vezi Profilul WWW
« : Septembrie 19, 2005, 22:57:16 »

Aici puteţi discuta despre problema Arie.
Memorat
spatarel
Strain
*

Karma: 31
Deconectat Deconectat

Mesaje: 37



Vezi Profilul WWW
« Răspunde #1 : Decembrie 03, 2005, 20:28:36 »

Problema asta mi se pare cea mai grea de pe siteul asta Confused

In special testul 1! Wink

Poate cineva sa-mi dea macar un hint, cu ce este? Very Happy

Eu am incercat foarte multe teste si toate au fost ok! Am incercat si tot felul de cazuri particulare (poligon in poligon, poligoanele au o latura comuna, poligoanele sunt identice, poligoanele au un pct. comun - oare ce n-am incercat???) si nimic... Sad

Trebuie sa afisez ceva deosebit, intr-un anumit caz? (ex.: 0, in loc de 0.000, atunci cand poligoanele nu se intersecteaza?)
Memorat

Atat am avut de spus
Cosmin
Echipa infoarena
Nu mai tace
*****

Karma: 351
Deconectat Deconectat

Mesaje: 1.799



Vezi Profilul
« Răspunde #2 : Decembrie 04, 2005, 01:09:12 »

Mie mi se pare destul de simpla, am facut-o in vreo jumatate de ora sau mai putin si a mers din prima, eu mergeam din aproape in aproape cu o linie de baleiere si verificam intersectiile cu poligoanele, ariei ii adaugam eps * (x3-x2).
Memorat
spatarel
Strain
*

Karma: 31
Deconectat Deconectat

Mesaje: 37



Vezi Profilul WWW
« Răspunde #3 : Decembrie 04, 2005, 04:52:04 »

Tx. for the advice Wink

Eu am incercat s-o fac clasic, ca pentru limite mai mari Very Happy

Mai exact:
1) pun intr-o lista punctele care:
- definesc un poligon si sunt in interiorul celuilalt;
- rezulta din intersectia a doua laturi, apartinand una unui poligon si cealalta celuilalt
2) pentru punctele din lista, aplic infasuratoare convexa
3) Calculez aria poligonului rezultat

Teoretic ar trebui sa mearga pe orice test Smile. Ma gandesc ca poate am gresit un detaliu stupid... Sad si eram curis ce (din greseli se invata Wink ).

Cred ca o sa fac si eu cu baleiere... damn...

Si totusi... daca faci cu baleiere, nu e posibil sa pierzi precizie? (Ma gandesc asa: daca micsorezi eps-ul, creste precizia, dar scade timpul de executie, si invers...)
Memorat

Atat am avut de spus
bogdan2412
Echipa infoarena
Nu mai tace
*****

Karma: 410
Deconectat Deconectat

Mesaje: 951



Vezi Profilul
« Răspunde #4 : Decembrie 04, 2005, 07:45:12 »

Rezolvarea cu infasuratoarea convexa este buna si merge pentru toate cazurile. Ai o greseala in implementare undeva...
Memorat
spatarel
Strain
*

Karma: 31
Deconectat Deconectat

Mesaje: 37



Vezi Profilul WWW
« Răspunde #5 : Decembrie 04, 2005, 12:42:14 »

M-am prins si eu ca am o greseala pe undeva. Very Happy
Din cauza asta ceream un hint legat de structura primului test. Wink
Memorat

Atat am avut de spus
spatarel
Strain
*

Karma: 31
Deconectat Deconectat

Mesaje: 37



Vezi Profilul WWW
« Răspunde #6 : Decembrie 30, 2005, 23:52:40 »

Foarte grea problema asta!

Pt. cei care au probleme cu testul 1 - solutia este "0.000" Very Happy si eu afisam "0.001"  Brick wall

Spor!
Memorat

Atat am avut de spus
Coty
Nu mai tace
*****

Karma: 6
Deconectat Deconectat

Mesaje: 235



Vezi Profilul WWW
« Răspunde #7 : Decembrie 31, 2005, 11:25:36 »

punctele... sunt direct varfurile poligonului sau trebuie sa mai facem noi inchiderea convexa a lor?
Memorat
filipb
Nu mai tace
*****

Karma: 232
Deconectat Deconectat

Mesaje: 929



Vezi Profilul
« Răspunde #8 : Ianuarie 01, 2006, 13:24:26 »

Sunt direct varfurile poligonului.
Memorat
Tabara Mihai
Vizitator
« Răspunde #9 : Februarie 19, 2006, 15:50:37 »

azi se implinesc 60 de zile de cand ma chinui la problema asta.....hm... nu e neaparat foarte grea insa este minutioasa...x puncte de intersectie dupa care un Graham pentru ele si apoi calcul de arie cu determinant.....nu stiu de ce nu-mi iese?Huh d'oh! ....cred ca am o greseala  la aflarea punctelor de intersetie.....la naiba! Brick wall
Memorat
MarcvsHdr
Strain
*

Karma: 1
Deconectat Deconectat

Mesaje: 44



Vezi Profilul
« Răspunde #10 : Martie 31, 2007, 15:32:06 »

Nu inteleg de sa mai faci infasuratoarea convexa la punctele de intersectie. Ele deja sunt pe o infasuratoare convexa, nu? In fond intersectia a doua poligoane convexe e un poligon convex, deci nu poate avea varfuri pe undeva prin interior.
Trebuia doar sa le sortezi trigonometric in jurul unuia dintre ele (am ales cel mai din stga si la egalitate, cel mai de jos).
Chestia e ca primesc WA pe 3 teste.... (nu, nu e vorba de testul 1, ci de testele 3, 8 si 9). Sunt foarte naspa problemele astea de geometrie analitica, implementez la ea de vreo 5 ore, am subit-at-o de 3 ori si ceva tot e gresit.
Macar de as avea un test pe care nu merge Sad.
Eu am pus intr-o lista:
1. toate punctele de intersectie dintre laturile poligoanelor
2. toate varfurile din P1 care sunt in interiorul SAU pe perimetrul lui P2
3. toate varfurile din P2 care sunt in interiorul SAU pe perimetrul lui P1
testez daca un punct e intr-un poligon sau pe perimetrul lui daca suma ariilor triunghiurilor de la el la laturi e egala cu aria poligonului.

Sortez si calculez aria cu determinant.

Oricum, ma mai gandesc, ceva TREBUIE sa imi scape din vedere.

(later edit)
Mda, dupa 5 ore pierdute cu problema asta, am realizat ca sortam gresit punctele cu panta=infinit Neutral (de jos in sus in loc de sus->jos). Eh, se mai intampla, sa nu patiti si voi Wink
« Ultima modificare: Martie 31, 2007, 16:22:54 de către S A » Memorat
cretu
Strain


Karma: 7
Deconectat Deconectat

Mesaje: 15



Vezi Profilul
« Răspunde #11 : Martie 24, 2008, 15:09:52 »

ati putea va rog sa postati testele 1 si 3 pe forum? vreau sa ma conving daca rationamentul meu e bun (si am doar erori de precizie pe 3 teste) sau nu.
Memorat

I wuv C++.
wefgef
Nu mai tace
*****

Karma: 1049
Deconectat Deconectat

Mesaje: 3.008


razboinicu' luminii


Vezi Profilul
« Răspunde #12 : Martie 24, 2008, 21:00:14 »

Din pacate la problemele din arhiva testele nu se fac publice.
Memorat

omului i-au fost date instinctele pentru a supravietui, nu pentru a fi sclavul lor.
cretu
Strain


Karma: 7
Deconectat Deconectat

Mesaje: 15



Vezi Profilul
« Răspunde #13 : Martie 24, 2008, 21:53:02 »

ok nu-i bai. Mi-am dat seama ce greseam numai k tot imi pica pe testul 3. E evil Evil or Very Mad
Memorat

I wuv C++.
taloibogdan
Strain
*

Karma: 19
Deconectat Deconectat

Mesaje: 27



Vezi Profilul
« Răspunde #14 : Iunie 11, 2009, 22:03:48 »

Nu inteleg!!! Brick wall
Am facut cu baleere.
Cand am precizia 0.001 imi merge testul 7.
Cand 'maresc' precizia la 0.0005 nu imi mai merge testul 7.(cu toate ca 0.0005 divide 0.001) Read This!
Si daca cumva am precizia prea 'mare'... de ce cand o fac 0.0001 imi merge testul 7(pacat ca nu imi intra in timp 4 teste) ? ? ? Cry
Memorat
pauldb
Nu mai tace
*****

Karma: 821
Deconectat Deconectat

Mesaje: 1.901



Vezi Profilul
« Răspunde #15 : Iunie 11, 2009, 22:23:32 »

O precizie cat mai mica nu te avantajeaza de fiecare data. Din cauza operatiilor pe numere reale, rezultatele sunt rotunjite si uneori diferenta dintre rezultatul asteptat si cel obtinut este considerabila.

Sfatul meu e sa incerci sa folosesti cat mai putine operatii pe numere reale inainte de a micsora precizia.
Memorat

Am zis Mr. Green
Addy.
Strain
*

Karma: -4
Deconectat Deconectat

Mesaje: 30



Vezi Profilul
« Răspunde #16 : Martie 26, 2011, 20:27:45 »

Ma poate ajuta cineva la problema asta? Cred ca este din cauza preciziei cu numere reale... Dupa ce am folosit o functie de 'egal' am sarit de la 0 la 60 de puncte. Vad ca au mai fost si alte persoane cu probleme pe testele respective.
Cod:
bool egal (double a, double b) {

double c = a - b;
if (c < 0) c = -c;

if (c < 0.00000000001) return 1;
return 0;
}
Memorat
ctlin04
Nu mai tace
*****

Karma: 23
Deconectat Deconectat

Mesaje: 207



Vezi Profilul
« Răspunde #17 : Mai 10, 2012, 08:54:23 »

Stie cineva ce are testul 3, ca nu ma pot prinde nicidecum  Brick wall
Memorat
Impaler_009
Client obisnuit
**

Karma: 23
Deconectat Deconectat

Mesaje: 59



Vezi Profilul
« Răspunde #18 : August 16, 2013, 15:54:53 »

Pentru toti cei care se zbat cu problema asta: Trebuie sa afisezi EXACT 3 zecimale, nici mai mult, nici mai putin. Deci, fout<<fixed<<setprecision(3)<<A; neaparat.
Memorat
Pagini: [1]   În sus
  Imprimă  
 
Schimbă forumul:  

Powered by SMF 1.1.19 | SMF © 2006-2013, Simple Machines