|
Titlul: 180 Drumuri minime Scris de: Mircea Pasoi din Februarie 19, 2006, 23:45:53 Aici puteţi discuta despre problema Drumuri minime (http://infoarena.ro/problema/dmin).
Titlul: 180 Drumuri minime Scris de: u-92 din Februarie 20, 2006, 00:00:36 imi poate recomanda cineva ce functie sa folosesc pt a calcula logaritmul?
in concurs am testat diferite variante si era foarte dubios.. folosind "log" cu tipul double iau 0.. insa daca schimb in "log10" si tipul in long double iau 80, cu "logl" si tipul long double iau 5 :idea: Titlul: 180 Drumuri minime Scris de: Mircea Pasoi din Februarie 20, 2006, 00:06:38 Mie mi-a mers ok cu log() si double.
Titlul: 180 Drumuri minime Scris de: u-92 din Februarie 20, 2006, 00:20:29 am descoperit greseala ](*,) ](*,) ](*,)
eu comparam pur si simplu.. acum am bagat un eps = 1e-10 si merge de 100 Titlul: 180 Drumuri minime Scris de: Silviu-Ionut Ganceanu din Februarie 20, 2006, 02:59:49 Asa se invata cel mai bine: gresind in concursuri! ;)
Silviu Titlul: 180 Drumuri minime Scris de: Paul-Dan Baltescu din Februarie 20, 2006, 15:27:27 Iau 85 de puncte ](*,) (pic testele 16,19,20 cu WA)... Ce e asa de special la testele astea? Are cineva vreo idee unde gresesc? 8-[
Titlul: 180 Drumuri minime Scris de: Gogu Marian din Februarie 20, 2006, 15:48:19 Incearca sa folosesti o precizie mai mare cand compari egalitatea dintre 2 numere reale. Ar trebui sa mearga cu 1e-8 de exemplu.
Titlul: 180 Drumuri minime Scris de: Paul-Dan Baltescu din Februarie 20, 2006, 18:35:56 Da, asta era, multumesc. :)
Titlul: 180 Drumuri minime Scris de: Iacob Ioan Fanica din Februarie 21, 2006, 22:48:28 Imi spune si mie cineva daca e corect cum calculez nr de drumuri de cost minim?
Eu calculez cu djickstra drumul minim de la 1 la un nod iar daca il gasesc initializez nr de drumuri minime pt. drumul respectiv cu nr. de drumuri de cost minim de la nodul anterior de la care am cautat costul minim. Daca e egal adun numarul de drumuri prin nodul prin care e egal. Si iau 5 puncte fara logaritm iar cu 0. Ma ajuta si pe mine cineva. Va rog.Multumesc! Sau daca nu sa imi dea cineva un test mai mare si raspunsul corect sa verific.(nu unul oficial, ca oricum nu se dau :D ) Am reusit sa iau 15 puncte dar nu stiu cum sa fac aproximarea aia cu 10e-10 sau -8.Ce intoarce aia si cum o folosesc? Titlul: 180 Drumuri minime Scris de: u-92 din Februarie 22, 2006, 11:44:49 cand lucrezi cu numerele reale apar erori de precizie (de exemplu sqrt(2) nu va intoarce toate zecimalele lui radical din 2).. de aceea (in cazul problemei dmin) iti iei o marja de eroare
Cod: eps = 0.0000000001 (echivalent cu 1e-10) acum, daca ai doua numere reale a si b, cand vrei sa testezi daca sunt egale vei folosi Cod: if( abs(a-b) <= eps ) ps: sunt probleme in care se cere rezultatul cu o marja de eroare de 0.001 (de exemplu), acolo vei putea alege epsilon = 0.001. (deci 1.445690994 il vei considera egal cu 1.4458906956) Titlul: 180 Drumuri minime Scris de: Marius Stroe din Februarie 22, 2006, 12:15:54 Si eu am folosit algoritmul lui The_Godfather mai putin problema aproximarilor si am luat 10 puncte... =D>
Cred ca gresesc la update-ul numarului de drumuri minime... Ce va da pentru Cod: 5 7 Poate asa imi dau seama unde gresesc (inclusiv pe hartie) :P ! Titlul: 180 Drumuri minime Scris de: Sara Nicolae Bogdan din Februarie 22, 2006, 12:27:49 1 3 2 3
Titlul: 180 Drumuri minime Scris de: u-92 din Februarie 22, 2006, 13:36:56 Citat costul energetic al unei legaturi este un numar intreg din intervalul [2, 10^9] Titlul: 180 Drumuri minime Scris de: Filip Cristian Buruiana din Februarie 22, 2006, 16:03:07 Citat Imi spune si mie cineva daca e corect cum calculez nr de drumuri de cost minim? Eu calculez cu djickstra drumul minim de la 1 la un nod iar daca il gasesc initializez nr de drumuri minime pt. drumul respectiv cu nr. de drumuri de cost minim de la nodul anterior de la care am cautat costul minim. Daca e egal adun numarul de drumuri prin nodul prin care e egal. Si iau 5 puncte fara logaritm iar cu 0. Ma ajuta si pe mine cineva. Va rog.Multumesc! In momentul cand afli in djikstra nodul alb (dupa explicatia din Cormen) care are distanta pana la 1 minima, atunci faci numararea: aduni toate numerele de forma P
Titlul: 180 Drumuri minime Scris de: Iacob Ioan Fanica din Februarie 22, 2006, 17:55:02 Multumesc tuturor pentru ajutor!Acu merge si le egaleaza.
Acu iau 10 puncte am sa vad de ce. Cat da pentru testul asta? Cod:
Titlul: 180 Drumuri minime Scris de: Iacob Ioan Fanica din Februarie 22, 2006, 18:37:47 In momentul cand afli in djikstra nodul alb (dupa explicatia din Cormen) care are distanta pana la 1 minima, atunci faci numararea: aduni toate numerele de forma P
Cod:
Titlul: 180 Drumuri minime Scris de: Filip Cristian Buruiana din Februarie 22, 2006, 19:17:02 Mie imi da
Cod: 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 0 1 1 1 1 1 1 0 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 0 Si cred ca e si bine, din moment ce am luat 100 :? Mai, dupa ce afli nodul ala, te gandesti care pot fi predecesorii lui in arborele de drumuri minime ( asta inseamna conditiile alea doua ) si aduni valorile corespunzatoare pt. predecesori. Titlul: 180 Drumuri minime Scris de: Marius Stroe din Februarie 22, 2006, 20:38:40 Eu unul am determinat distanta minima de la nodul 1 la fiecare dintre celelalte noduri...
Pentru a numara cate drumuri de lungime minima sunt pana la un nod p am facut asa: Cod:
Mi-am exprimat din nou parerea, deoarece am incercat si ca filipb si ca The_Godfather si ca mine :D si iau aceleasi 70 de puncte. Precizia e 1e-10... In plus a inceput sa imi placa Dijkstra :roll: . Titlul: Raspuns: 180 Drumuri minime Scris de: Tabara Mihai din Octombrie 01, 2006, 13:56:22 Imi explica si mie de ce cu if() - ul asta merge de 100
Cod: if ( d[j->vf] - (d[k] + dis ) > eps ) si cu if-ul asta ia 0 puncte Cod: if ( d[j->vf] > d[k] + dis ) De ce e asa mare diferenta intre "if ( d[j->vf] - (d[k] + dis ) > eps )" si "if ( d[j->vf] > d[k] + dis )". Precizez ca am folosit eps = 1e-10. :oops: :oops: Titlul: Raspuns: 180 Drumuri minime Scris de: Paul-Dan Baltescu din Octombrie 01, 2006, 14:49:38 Pai e evident. La primul if nu folosesti eps ca sa eviti erorile de precizie.
Titlul: Raspuns: 180 Drumuri minime Scris de: Ivan Nicolae din Ianuarie 05, 2007, 16:57:09 Am definit astea:
Cod: #define NMAX 1501 Apoi in interiorul lui Dijkstra, dupa ce am descoperit nodul in care s-a ajuns cu cost minim.... adica , cand ma duc pe vecinii nodului in care s-a ajuns cu costu' minim. Cod: for (i=1;i<=n;i++) Asa iau 10 puncte, daca scot eps-ul si fac fara iau 5 puncte. Nu vad ce alte erori de precizie pot aparea dupa ce includ si eps-ul in program. Titlul: Raspuns: 180 Drumuri minime Scris de: Airinei Adrian din Ianuarie 06, 2007, 18:50:28 mi-a sarit in ochi al doilea if cand verifici egalitatea.. nu mai iei in considerare eps
p.s: scapa si de modulo, consuma foarte mult timp de executie Titlul: Răspuns: 180 Drumuri minime Scris de: Andrei Homorodean din Iunie 23, 2007, 20:16:43 Pe testul pus de Marius mie imi da un raspuns diferit de cel al lui sarabogdan si anume 1 1 3 4. Cine are dreptate?(cu sursa de 100)
Titlul: Răspuns: 180 Drumuri minime Scris de: Bondane Cosmin din Iunie 23, 2007, 20:22:01 Si mie imi da 1 1 3 4...tot cu sursa de 100 pcte.
Titlul: Răspuns: 180 Drumuri minime Scris de: Ionescu Vlad din Iulie 07, 2007, 22:16:20 Mie imi da 5 4 3 4 cu sursa de 100... care-i raspunsul pana la urma?
1 1 3 4 eu zic ca sigur nu-i corect. De la nodul 1 pana la 2 sunt clar mai multe drumuri ( 1 - 2, 1 - 4 - 2, 1 - 5 - 4 - 2, 1 - 5 - 4 - 3 - 2, 1 - 4 - 3 - 2, daca am facut bine ) Nici mie nu imi da bine pentru celelalte noduri.. oricum nu cred ca are importanta, ca se precizeaza ca nu poate exista un cost mai mic ca 2. Titlul: Răspuns: 180 Drumuri minime Scris de: Mihai Leonte din August 09, 2007, 10:41:41 Pai in primul rand, testul lui Marius nu e bun :P. (ala, primul... cu muchiile de cost 1). De ce? Pentru ca orice drum intre 1 si X e minim (orice produs e 1, sau altfel spus, orice suma de logaritmi e 0).
De altfel spune si in enunt, ca dimensiunile sunt intre 2 si 10^9. Raspunsul ar fi 5 6 4 4 - daca drumurile sunt elementare infinit infinit infinit infinit - daca drumurile nu sunt elementare Nu scrie nicaieri daca drumurile sunt sau nu elementare, pentru ca reiese din conditia de drum minim (din nou, daca costul fiecarei muchii >1) Cat despre precizie... sa ma dau cu capul de pereti, nu alta ](*,) :roll: Titlul: Răspuns: 180 Drumuri minime Scris de: Andrei Misarca din Ianuarie 09, 2010, 17:11:29 Testele nu cred că sunt foarte puternice, pentru că iau 100 cu Belman-Ford, care teoretic nu ar trebui să ia maxim, pentru că nu generează întotdeauna soluția corectă.
Titlul: Răspuns: 180 Drumuri minime Scris de: Farcasanu Alexandru Ciprian din Ianuarie 30, 2010, 12:22:21 @ Mishu91
Ce vrei sa spui prin faptul ca Bellman ford nu genereaza intotdeauna solutia corecta? Titlul: Răspuns: 180 Drumuri minime Scris de: Andrei Misarca din Ianuarie 30, 2010, 13:45:28 Uite pe exemplul următor (lungimile sunt deja logaritmate, să zicem).
Cod: 4 5 Titlul: Răspuns: 180 Drumuri minime Scris de: Farcasanu Alexandru Ciprian din Ianuarie 30, 2010, 18:42:56 Pai atunci baga-l iar in coada dar ai grija ca sa nu aduni de mai multe ori acelasi drum.
Dupa ce relaxezi vecinii unui nod, NR[nod] = 0 (avand grija sa pastrezi in alt vector valoare NR[nod]) Titlul: Răspuns: 180 Drumuri minime Scris de: Andrei Misarca din Ianuarie 31, 2010, 09:25:09 Ai dreptate, pare a merge așa, dar testele tot slabe sunt. :)
|