•domino
|
|
« : Februarie 21, 2005, 20:20:07 » |
|
Aici puteţi discuta despre problema Trapez.
|
|
|
Memorat
|
|
|
|
vladut.forum
Vizitator
|
|
« Răspunde #1 : August 30, 2005, 19:40:43 » |
|
auleu, n-am nici o idee, (doarO(n^4) ) pressupun ca O(n^2) ar fii destul de bun. dati-mi si mie un hint, ca daca era sa descoper cate paralelograme sunt era mai simplu, (s-a dat la .Campion), da la trapeze nu mai merge faza. sau poate sa mentin ideea de la paralelograme, astfel incat cand iau doua puncte, mijlocul il pun mai imaginar, adica pun mijlocul unde ar tb sa fie daca acel segment ar fii de lungime maxima, adica consider ca toate segmentele sunt egale, pot spune egale cu cel mai mare segment... adica daca am segmentu [------] este de lungime 6, dar segmentul maxim are lungimea 8, sa spunem deci am sa pun mijlocul [----|--] sau [--|-----], da nu cred ca merge...infine datimi un hint mc
|
|
|
Memorat
|
|
|
|
•vladcyb1
|
|
« Răspunde #2 : August 30, 2005, 19:45:14 » |
|
Eu am facut problema asa: am luat oricare 2 puncte, le-am calculat panta, am sortat pantele si de aici de descurci tu. Oricare 2 pante egale determina un trapez.
|
|
|
Memorat
|
Vlad Berteanu
|
|
|
vladut.forum
Vizitator
|
|
« Răspunde #3 : August 30, 2005, 19:50:37 » |
|
aha ai dreptate, mc mult, la paralelograme e, iei oricare 2 puncte si retii mijlocul, sortezi vectorul cu mijloacele, si te descurci mai departe...
da mai uite ca nu m-am gandit
|
|
|
Memorat
|
|
|
|
vladut.forum
Vizitator
|
|
« Răspunde #4 : August 31, 2005, 09:28:18 » |
|
mah tu cum calculezi panta, ca eu o calculez asa fac sin, cu dreapta care intersecteaza punctul cel mai de jos si e paralela cu Ox, si lucrez in sin ^ 2, ca sa nu intru in double a=y-y[j]; a=a*a; b=distanta dintre punctul i, si punctul j etc
|
|
|
Memorat
|
|
|
|
•vladcyb1
|
|
« Răspunde #5 : August 31, 2005, 10:12:32 » |
|
Considerand doua puncte, unul de coordonate Xa,Ya si altul de coord Xb,Yb , panta dreptei pe care se afla aceste doua puncte este:
m=(Yb-Ya)/(Xb-Xa);
|
|
|
Memorat
|
Vlad Berteanu
|
|
|
•filipb
|
|
« Răspunde #6 : August 31, 2005, 10:34:33 » |
|
Bineinteles ca mai exista un caz particular daca faci asa: trebuie sa consideri si cand dreapta ta este paralela cu Oy, adica Xa = Xb...
|
|
|
Memorat
|
|
|
|
vladut.forum
Vizitator
|
|
« Răspunde #7 : August 31, 2005, 11:43:19 » |
|
dap, le consider si pe alea, astea paralele le numar separat, adica numarparalele OX si numar si paralele OY las si eu codul poate imi spune careva unde gresesc... eu determin panta ca fiind patratul sinusul unghiului dintre segment si OX am vectorii p1[] si p2[], cu semnificatia panta(i)=p1 /p2; obs ca la un moment dat imultesc cu -1, pt ca segmentul are alta orientare... adika asa / sau \ asa... unu-numar alea paralele cu Oy doi-numar alea paralele cu Ox
for (i=0; i<n-1; i++) for (j=i+1; j<n; j++) { if (x[i]-x[j]==0) unu++; else if (y[i]-y[j]==0) doi++; else { a=(y[i]-y[j]); b=(x[i]-x[j])*(x[i]-x[j])+(y[i]-y[j])*(y[i]-y[j]); p1[k]=a*a; if (x[i]<x[j]&&y[i]>y[j]) p1[k]*=-1; else if (x[i]>x[j]&&y[i]<y[j]) p1[k]*=-1; p2[k]=b;k++; } }
dupa asta sortez cu qsort, sortarea e buna, garantez... apoi gasesc solutia ca fiind, la un moment dat caut cea mai mare succesiune de pante egale, si numarul trapezelor v-a creste cu n*(n-1)/2; unde n-lungimea succesiunii si mai adaug unu*(unu-1)/2; si doi*(doi-1)/2; si afisez... lucrez in long long afisez cu %ull afisez si sfarsit de linie
|
|
|
Memorat
|
|
|
|
•vladcyb1
|
|
« Răspunde #8 : August 31, 2005, 12:36:42 » |
|
Daca imi aduc bine aminte eu nu calculam efectiv panta. Pentru fiecare segment tineam minte din panta numaratorul si numitorul si apoi la soratare faceam produsul mezilor si produsul extremilor ca sa compar si asa evitam kestia cu paralelismul OX sau OY.
|
|
|
Memorat
|
Vlad Berteanu
|
|
|
vladut.forum
Vizitator
|
|
« Răspunde #9 : August 31, 2005, 13:31:47 » |
|
pai mai ti-am zis ca nu se pune nici la mine problema de paralelism, eu alea le tin separat, ca e mai simplu... apoi la panta tin si eu numaratorul si numitroul iar la sortare fac produsul mezilor = produsul extremilor...
|
|
|
Memorat
|
|
|
|
•Cosmin
|
|
« Răspunde #10 : August 31, 2005, 17:52:11 » |
|
Poti sa tii pante ca perechi de numarator numitor, dar fractia tre sa fie ireductibila si atunci doua pante sunt egale cand numaratorii respectiv numitorii sunt egali.
|
|
|
Memorat
|
|
|
|
•Gabi
Strain
Karma: 1
Deconectat
Mesaje: 13
|
|
« Răspunde #11 : Septembrie 28, 2005, 17:33:47 » |
|
Imi puteti spune va rog cat da pt n = 8 ?
Shi punctele:
0 0 1 3 2 0 4 5 3 6 2 7 1 1 4 3
Scuze, am uitat de ele.
|
|
|
Memorat
|
My software never has bugs, it just develops random features
|
|
|
•bogdan2412
|
|
« Răspunde #12 : Septembrie 29, 2005, 14:12:27 » |
|
15
|
|
|
Memorat
|
|
|
|
•cristy
|
|
« Răspunde #13 : Octombrie 01, 2005, 19:12:41 » |
|
Raspunsul e 24...oricum...traba sa fie par...trebuie numarate de 2 ori trapezele...sunt trapeze in ambele sensuri...
|
|
|
Memorat
|
... lipsa de inspiratie ...
|
|
|
•bogdan2412
|
|
« Răspunde #14 : Octombrie 01, 2005, 19:24:49 » |
|
Am obtinut 15 cu sursa care ia punctaj maxim. Oricum m-am uitat pe datele de intrate si am observat ca 4 5, 3 6, 2 7 sunt puncte coliniare, dar in problema se specifica ca oricare 3 puncte sunt necoliniare.
|
|
|
Memorat
|
|
|
|
•cristy
|
|
« Răspunde #15 : Octombrie 02, 2005, 10:04:32 » |
|
Aha...scuze...la asta nu m-am gandit...da...oricum...nu trebuia sa fie numar par?
|
|
|
Memorat
|
... lipsa de inspiratie ...
|
|
|
u-92
Vizitator
|
|
« Răspunde #16 : Octombrie 02, 2005, 12:26:11 » |
|
cum adica le numeri in ambele sensuri? asa numeri de doua ori acelasi trapez.. nu trebuie neaparat ca raspunsul sa fie par
|
|
|
Memorat
|
|
|
|
•cristy
|
|
« Răspunde #17 : Octombrie 29, 2005, 09:57:19 » |
|
mah...hash-u asta...defapt inseamna...sa gasesti o formula pt care sa aduni toate pantele la un loc?..si dupa aia aduni...da...trasa sa gasesti o formula ca se la comprimi?...dati ceva exemplu...
|
|
|
Memorat
|
... lipsa de inspiratie ...
|
|
|
•domino
|
|
« Răspunde #18 : Octombrie 29, 2005, 11:18:20 » |
|
mah...hash-u asta...defapt inseamna...sa gasesti o formula pt care sa aduni toate pantele la un loc?..si dupa aia aduni...da...trasa sa gasesti o formula ca se la comprimi?...dati ceva exemplu... Citeste articolul de hashing de pe http://info.devnet.ro
|
|
|
Memorat
|
|
|
|
•cristy
|
|
« Răspunde #19 : Noiembrie 05, 2005, 09:45:35 » |
|
ce cazuri particulare sunt aici?...ca iau 70 de pct ca nu ma prind...am facut 1000 de exemple da nu ma prind...iau WA pe 3 teste, 2,7,8...
|
|
|
Memorat
|
... lipsa de inspiratie ...
|
|
|
•filipb
|
|
« Răspunde #20 : Noiembrie 05, 2005, 15:01:26 » |
|
Nici eu nu luam testele alea pentru ca foloseam precizie prea mica. Cand am folosit o precizie mare de 10^(-14) luam 100... Mai merge si sa nu faci impartire propriu-zisa, si sa compari fractii inmultind numitorii si numaratorii corespunzatori pe 64 biti si comparand cele doua produse ( asa e si mai exact... )
|
|
|
Memorat
|
|
|
|
•cristy
|
|
« Răspunde #21 : Noiembrie 05, 2005, 22:38:38 » |
|
eu am facut pur si simplu compararea produsului numitorilor si numaratorilor...da nu pe 64 de biti...pe 32 de biti...oare de aici sa fie problema?...
|
|
|
Memorat
|
... lipsa de inspiratie ...
|
|
|
•bogdan2412
|
|
« Răspunde #22 : Noiembrie 06, 2005, 08:59:23 » |
|
Da, cel mai probabil acolo e problema.
|
|
|
Memorat
|
|
|
|
•filipb
|
|
« Răspunde #23 : Noiembrie 06, 2005, 13:32:49 » |
|
Si vezi ca nu este suficienta numai compararea produsului... De exemplu, 2/(-3) < 2/5, dar 10 > -6...
|
|
|
Memorat
|
|
|
|
•cristy
|
|
« Răspunde #24 : Noiembrie 07, 2005, 22:02:46 » |
|
dar de ce conteaza si altceva decat produsul?...eu am facut simplificarile...si daca numitorul era cu minus, inmulteam fractia cu -1, si cat de cat...dupa sortare...erau toate in acelasi loc, adica...valorile probabil nu erau toate in ordine crescatoare...dar macar erau cele egale una langa cealalta...si de aici era usor...
|
|
|
Memorat
|
... lipsa de inspiratie ...
|
|
|
|