Pagini: [1]   În jos
  Imprimă  
Ajutor Subiect: 057 Barman  (Citit de 3948 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
« : Martie 20, 2005, 15:30:55 »

Aici puteţi discuta despre problema Barman.
Memorat
rss1987
Strain


Karma: -6
Deconectat Deconectat

Mesaje: 19



Vezi Profilul
« Răspunde #1 : Iulie 25, 2005, 10:14:58 »

Mi se pare mie sau solutia oficiala de la Barman e gresita..inclusiv 2 teste? Think
Memorat

RSS
domino
Echipa infoarena
Nu mai tace
*****

Karma: 281
Deconectat Deconectat

Mesaje: 1.340



Vezi Profilul WWW
« Răspunde #2 : Iulie 25, 2005, 11:49:53 »

Citat din mesajul lui: rss1987
Mi se pare mie sau solutia oficiala de la Barman e gresita..inclusiv 2 teste? Think


Ti se pare.
Memorat
spatarel
Strain
*

Karma: 31
Deconectat Deconectat

Mesaje: 37



Vezi Profilul WWW
« Răspunde #3 : Noiembrie 12, 2005, 23:04:14 »

Am si eu o mica problema cu problema asta  Tongue

Nu stiu cat ar trebui sa-mi dea pe testul asta:

16
2 2 3 2 2 1 2 2 3 3 2 1 1 2 2 1

Dupa solutia mea, se pare ca in final, se va obtine:

2 2 2 2 2 2 2 3 3 3 1 1 1 1 2 2

Si costul pt. a ajunge la aceasta configuratie este 144 sau 150?

Primul pas, este sa eliminam sticlele cu aleleasi valori, de pe aceleasi pozitii:

0 0 3 0 0 1 0 2 0 0 2 0 0 2 0 1
0 0 2 0 0 2 0 3 0 0 1 0 0 1 0 2

Bun... apoi, adaugam la solutie 20*6 = 120

Si apoi ne hotaram unde ajunge fiecare sticla...

Sticla a 3-a va ajunge a 8-a (cost 5)
Sticla a 6-a va ajunge a 11-a (cost 5)
Sticla a 8-a va ajunge a 3-a (cost 5)
Sticla a 11-a va ajunge a 6-a (cost 5)
Sticla a 14-a va ajunge a 16-a (cost 2)
Sticla a 16-a va ajunge a 14-a (cost 2)

Facem totalul si obtinem 120+5+5+5+5+2+2 = 144

Si totusi... eu am implementat solutia oficiala, cu care am obtinut 100 de puncte, si imi da 150  Rolling on the Floor Laughing

Asa ca... de fapt tie ti se pare ca lui rss1987 i se pare, pentru ca rss1987 are dreptate: atat solutia oficiala cat si doua dintre teste SUNT gresite Wink
Memorat

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

Karma: 50
Deconectat Deconectat

Mesaje: 260



Vezi Profilul
« Răspunde #4 : Noiembrie 13, 2005, 13:00:29 »

Nu tu spuneai ca te lasasesi de info? Raised eyebrow
Pentru unul care face dinamica si flux cu greedy, nu cred ca ar fi intelept sa razi aporetic, mai degraba sa vii cu o solutie si niste teste noi.
Memorat
spatarel
Strain
*

Karma: 31
Deconectat Deconectat

Mesaje: 37



Vezi Profilul WWW
« Răspunde #5 : Noiembrie 13, 2005, 15:02:05 »

1) Ba da, anul trecut m-am lasat - adica nu m-am mai pregatit, dar n-am zis niciodata ca ma las de tot, ci doar un an Wink

2) Nu radeam de tine, ci de raspunsul lui Domino, care culmea, era gresit....

Si ca sa rezolv si problema, iata si solutia mea:

Pentru testul:

16
2 2 3 2 2 1 2 2 3 3 2 1 1 2 2 1

Vom incerca toate permutarile ciclice sortate, si vom calcula costul fiecareia, pentru a o alege pe cea mai "ieftina". In acest caz, permutarea optima va fi:

2 2 2 2 2 2 2 3 3 3 1 1 1 1 2 2

Primul pas va fi eliminarea din calcul a sticlelor care se afla deja la locul lor, si vom obtine:

0 0 3 0 0 1 0 2 0 0 2 0 0 2 0 1
0 0 2 0 0 2 0 3 0 0 1 0 0 1 0 2

Cu un cost de 20*6 = 120

Diferenta dintre solutia mea si solutia oficiala consta in modul in care se "cupleaza" sticlele (nu e vorba de cuplajul prin flux...).

O metoda ar fi greedy: pentru fiecare sticla care nu e la locul ei, caut cea mai apropiata masa pe care as putea s-o pun - insa aceasta metoda este gresita.

O alta metoda este cea oficiala, insa si aceasta are metoda greedy la baza, motibul pentru care metoda oficiala scoate rezultate diferite fata de gredy, ar fi ordine in care sunt "cuplate" sticlele

Metoda cu care probabil toata lumea va fi de acord cu mine ca este corecta, este cuplajul intr-un graf bipatit, singura problema ar fi insa, ca o astfel de rezolvare nu se incadreaza in timp. Sad

Si in final, ar mai fi rezolvarea la care m-am gandit eu, dar nu numai!, si care se baeaza pe cateva obsevatii de bun simt:
1) Sticlele cu aceeasi valoare se pot trata complet independent, in alte cuvinte, problema se poate reduce la o serie de probleme, in care trebuie sa "cuplam" intre ele, mai multe sticle de aceeasi valoare. Voi exemplifica aici cu valoarea 2:

0 0 0 0 0 0 0 2 0 0 2 0 0 2 0 0
0 0 2 0 0 2 0 0 0 0 0 0 0 0 0 2

2) In acest caz, pentru a obtine cost minim, va trebui sa cuplam primele doua sticle cu primele doua pozitii, si ultima sticla cu ultima pozitie. Mai exact, costurile de deplaseare se pot marca in felul urmator:

0 0 0 0 0 0 0 2 0 0 2 0 0 2 0 0
0 0 2 0 0 2 0 0 0 0 0 0 0 0 0 2
0 0 1 1 1 2 2 1 1 1 0 0 0 0 1 1 - costurile

Daca de exemplu, vom incerca sa cumplam sticlele altfel, vorm obtine mereu un cost mai mare (de ex.: sticla a doua, pe pozitia a 3-a, si apoi greedy)

0 0 0 0 0 0 0 2 0 0 2 0 0 2 0 0
0 0 2 0 0 2 0 0 0 0 0 0 0 0 0 2
0 0 1 1 1 2 2 1 1 1 1 2 2 1 1 1 - costurile

3) Se poate observa clar (sper eu) care este "sursa" costului suplimentar. De aici se contureaza si solutia pe care o propun: dupa primul pas al rezolvarii, fiecare sticla care nu este la locul ei, se "cupleaza" cu prima masa ocupata necorespunzator. Algoritmul se repeta pana la rezolvarea tuturor sticlelor Smile

Sper ca am explicat inteligibil pentru cat mai multa lume...

Si, ca sa rezolv si problema testelor si a evaluatorului, iata ce propun:

1) toate fisierele de intrare sunt corect definite iar eu nu-mi propun sa complic airea problema, asa ca nu vad nici un motiv pentru a le schimba

2) trimit acum spre evaluare sursa mea de 80p, care foloseste metoda explicata mai sus

3) tot ceea ce ar trebui facut pentru a corecta evaluatorul, este sa rulezi sursa de 80p, si sa modifici cele doua out-uri care sunt gresite

4) n-ar fi rau daca in final s-ar reevalua problema, atat in arhiva, cat si la preONI #3

Spor!
Memorat

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

Karma: 281
Deconectat Deconectat

Mesaje: 1.340



Vezi Profilul WWW
« Răspunde #6 : Noiembrie 20, 2005, 16:26:14 »

Problema "Barman" a fost reevaluata in Arhiva de problemele, iar in articolul cu solutii de la preONI 2005 runda 3 exista o solutie corecta oferita de Dan Spatarel.  Applause
Memorat
Pagini: [1]   În sus
  Imprimă  
 
Schimbă forumul:  

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