infoarena

infoarena - concursuri, probleme, evaluator, articole => Arhiva de probleme => Subiect creat de: Mircea Pasoi din Septembrie 19, 2005, 22:57:16



Titlul: 112 Arie
Scris de: Mircea Pasoi din Septembrie 19, 2005, 22:57:16
Aici puteţi discuta despre problema Arie (http://infoarena.ro/problema/arie).


Titlul: Super problema
Scris de: Dan-Constantin Spatarel din Decembrie 03, 2005, 20:28:36
Problema asta mi se pare cea mai grea de pe siteul asta :-?

In special testul 1! ;)

Poate cineva sa-mi dea macar un hint, cu ce este? :D

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... :(

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


Titlul: 112 Arie
Scris de: Cosmin Negruseri din 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).


Titlul: Formule si algoritmi clasici
Scris de: Dan-Constantin Spatarel din Decembrie 04, 2005, 04:52:04
Tx. for the advice ;)

Eu am incercat s-o fac clasic, ca pentru limite mai mari :D

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 :). Ma gandesc ca poate am gresit un detaliu stupid... :( si eram curis ce (din greseli se invata ;) ).

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...)


Titlul: 112 Arie
Scris de: Bogdan-Cristian Tataroiu din Decembrie 04, 2005, 07:45:12
Rezolvarea cu infasuratoarea convexa este buna si merge pentru toate cazurile. Ai o greseala in implementare undeva...


Titlul: 112 Arie
Scris de: Dan-Constantin Spatarel din Decembrie 04, 2005, 12:42:14
M-am prins si eu ca am o greseala pe undeva. :D
Din cauza asta ceream un hint legat de structura primului test. ;)


Titlul: Greu!
Scris de: Dan-Constantin Spatarel din Decembrie 30, 2005, 23:52:40
Foarte grea problema asta!

Pt. cei care au probleme cu testul 1 - solutia este "0.000" :D si eu afisam "0.001"  ](*,)

Spor!


Titlul: 112 Arie
Scris de: Sima Mihai Cotizo -vechi din Decembrie 31, 2005, 11:25:36
punctele... sunt direct varfurile poligonului sau trebuie sa mai facem noi inchiderea convexa a lor?


Titlul: 112 Arie
Scris de: Filip Cristian Buruiana din Ianuarie 01, 2006, 13:24:26
Sunt direct varfurile poligonului.


Titlul: 112 Arie
Scris de: Tabara Mihai din 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???? #-o ....cred ca am o greseala  la aflarea punctelor de intersetie.....la naiba! ](*,)


Titlul: Răspuns: 112 Arie
Scris de: Mihai Leonte din 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 :(.
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 :| (de jos in sus in loc de sus->jos). Eh, se mai intampla, sa nu patiti si voi ;)


Titlul: Răspuns: 112 Arie
Scris de: Musina Rares din 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.


Titlul: Răspuns: 112 Arie
Scris de: Andrei Grigorean din Martie 24, 2008, 21:00:14
Din pacate la problemele din arhiva testele nu se fac publice.


Titlul: Răspuns: 112 Arie
Scris de: Musina Rares din 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:


Titlul: Răspuns: 112 Arie
Scris de: Taloi Bogdan Cristian din Iunie 11, 2009, 22:03:48
Nu inteleg!!! ](*,)
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) :readthis:
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) ? ? ? :'(


Titlul: Răspuns: 112 Arie
Scris de: Paul-Dan Baltescu din 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.


Titlul: Răspuns: 112 Arie
Scris de: Adrian Draghici din 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;
}


Titlul: Răspuns: 112 Arie
Scris de: UAIC.VlasCatalin din Mai 10, 2012, 08:54:23
Stie cineva ce are testul 3, ca nu ma pot prinde nicidecum  ](*,)


Titlul: Răspuns: 112 Arie
Scris de: Mihai Nitu din 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.