Navigacija
Lista poslednjih: 16, 32, 64, 128 poruka.

ACM zadatak - PIE

[es] :: Art of Programming :: ACM zadatak - PIE

[ Pregleda: 2666 | Odgovora: 5 ] > FB > Twit

Postavi temu Odgovori

Autor

Pretraga teme: Traži
Markiranje Štampanje RSS

Divjak
Vladimir Divjak
Student

Član broj: 4783
Poruke: 535
77.46.198.*



+1 Profil

icon ACM zadatak - PIE14.08.2007. u 05:00 - pre 168 meseci
Za sve test primere koje sam ja smislio program vrati tačno rešenje ali online judge mi uvek vrati "Wrong answer" Ako ima nekog koga ne mrzi, neka baci pogled i da neki savet! Hvala!

Tekst zadatka:
My birthday is coming up and traditionally I’m serving pie. Not just one pie, no, I have a number N of them, of various tastes and of various sizes. F of my friends are coming to my party and each of them gets a piece of pie. This should be one piece of one pie, not several small pieces since that looks messy. This piece can be one whole pie though. My friends are very annoying and if one of them gets a bigger piece than the others, they start complaining. Therefore all of them should get equally sized (but not necessarily equally shaped) pieces, even if this leads to some pie getting spoiled (which is better than spoiling the party). Of course, I want a piece of pie for myself too, and that piece should also be of the same size. What is the largest possible piece size all of us can get? All the pies are cylindrical in shape and they all have the same height 1, but the radii of the pies can be different.

Input
One line with a positive integer: the number of test cases. Then for each test case:
• One line with two integers N and F with 1 ≤ N, F ≤ 10 000: the number of pies and
the number of friends.
• One line with N integers ri with 1 ≤ ri ≤ 10 000: the radii of the pies.
Output
For each test case, output one line with the largest possible volume V such that me and my
friends can all get a pie piece of size V. The answer should be given as a floating point
number with an absolute error of at most 10^−3.

Moja ideja:
Poređao sam sve pite u prioritetni red implementiran preko heapa...
Podatak za prioritet mi je Zapremina pite/(Broj trenutnih usera pite + 1).
Zatim imam petlju koja se obrne onoliko puta koliko imam korisnika (zvanice + slavljenik) i u svakom trenutku piti sa vrha prioritetnog reda inkrementiram broj korisnika i gurnem na odgovarajuće mesto u heap.
Očigledno ono što se pri poslednjoj iteraciji nađe na vrhu heapa je i rešenje...

Ja sam program testirao za 20ak primera, i uvek je vratio tačno rešenje...

Da li neko ima ideju gde sam pogrešio?
And don't be mad at me for crying for humanity,
call it pretensions but I got good intentions,
to keep my sanity, I'm hoping, fuck, there's gotta be
an answer to their strategies and their evil inventions... ~Looptroop
 
Odgovor na temu

cassey
Andreja Ilic
Nis

Član broj: 57788
Poruke: 188
91.150.121.*



+1 Profil

icon Re: ACM zadatak - PIE14.08.2007. u 18:05 - pre 168 meseci
Pozdrav,

Mislim da nisam bas najbolje shvatio tvoje resenje (mozda gresim, ali mislim da nisi bas dobro shvatio zadatak). Dakle, ti imas coveka i pita, datih poluprecnika. Treba svakom od njih da dodeliti jedno parce jedne pite, ali tako da se maksimizuje zapremina tog parceta. Prosto receno, ti svaku pitu treba da podelis ne neke delove, onda svaki covek uzme po jedno parece. Pitanje je, ako svi uzmu jednake parcice, koliko je tada maksimalna zapremina tih parcica.

Primer: i poluprecnici su . Prvu pitu podelis na pola, a druge dve na delove , i tada dobijas povrsine za svakog od cetiri coveka.

Resenje bi islo ovako: Maksimalunu zapreminu trazimo binarno. Ukoliko je trenutna zapremina , jednostavno vidis koliko parcica date zapremine mozes da dobije iz svake pite. Ukoliko je suma tih delova veca ili jednaka od povecaces granice za ; u suprotnom smanjujes. To radis do trazene preciznosti.

Mozes skinuti test primere za taj zadatak sa: http://www.csc.kth.se/contest/nwerc/2006/
To je zadatak C, pa vidi gde imas gresku.






Math is like love. A simple idea but it can get complicated.
 
Odgovor na temu

Divjak
Vladimir Divjak
Student

Član broj: 4783
Poruke: 535
77.46.176.*



+1 Profil

icon Re: ACM zadatak - PIE15.08.2007. u 09:14 - pre 168 meseci
Dobro sam ja shvatio zadatak...

Evo kako bi se moj program ponašao za 1. Primer
Prioriteti pita bi u početnom trenutku redom bili: 16, 9, 9
Zatim bi program dodao jednog usera prvoj piti pa bi prioriteti bili: 9, 9, 8 (16/2)
A posle toga: 9, 8, 4.5
I na kraju: 8, 4.5, 4.5

Četiri iteracije za F + 1 čoveka.

Moj program radi tako što u svakom trenutku odlučuje koju je pitu najekonomičnije deliti na više delova i dobijenu zapreminu uzima za max...

Razmatrao sam i rešenje sa binarnom pretragom, ali imao sam utisak da bi bilo sporije, mada verovatno grešim, pa ukoliko se moje rešenje pokaže kao pogrešno, probaću tvoj predlog.

Hvala!

[edit]

E neverovatno... Moj program vraća tačna rešenja za sve test primere koje sam našao na sajtu, ali mi naš online judge i dalje vraća wrong answer!

BTW, pogledao sam i rešenja sa binarnom pretragom... Definitivno su brža i jednostavnija... Moje ima oko 150 linija koda, za razliku od njihovih koja imaju 20ak :)



[Ovu poruku je menjao Divjak dana 15.08.2007. u 14:23 GMT+1]
And don't be mad at me for crying for humanity,
call it pretensions but I got good intentions,
to keep my sanity, I'm hoping, fuck, there's gotta be
an answer to their strategies and their evil inventions... ~Looptroop
 
Odgovor na temu

cassey
Andreja Ilic
Nis

Član broj: 57788
Poruke: 188
91.150.121.*



+1 Profil

icon Re: ACM zadatak - PIE15.08.2007. u 13:48 - pre 168 meseci
:)

Samo ja i dalje ne kapiram tvoj algoritam. Dakle, ti u hepu cuvas trenutne parcice svih pita i koliko vidim uvek najvecu delis na dva dela... Sta bi tvoj algoritam dao kada bi imao pite velicina i to treba da podeliti na 5 dela (tj. ).
Math is like love. A simple idea but it can get complicated.
 
Odgovor na temu

Divjak
Vladimir Divjak
Student

Član broj: 4783
Poruke: 535
77.46.177.*



+1 Profil

icon Re: ACM zadatak - PIE15.08.2007. u 14:04 - pre 168 meseci
Ne! Ne čuvam parčiće pita u heapu nego strukture koje mi govore zapreminu, broj trenutnih usera i prioritet.
I ne delim uvek najveću na 2 dela nego na br.usera + 1 delova...

Znači za tvoj primer:

15, 5, 5 -> 255, 25, 25

Korak 1:
Max = 255
Heap: 112.5, 25, 25

Korak 2:
Max = 112.5
Heap: 75, 25, 25

Korak 3:
Max = 75
Heap: 56.25, 25, 25

Korak 4:
Max = 56.25
Heap: 45, 25, 25

i
Korak 5:
Max = 45
Heap: nebitno...

i rešenje mi je 45pi

geddit? :)
And don't be mad at me for crying for humanity,
call it pretensions but I got good intentions,
to keep my sanity, I'm hoping, fuck, there's gotta be
an answer to their strategies and their evil inventions... ~Looptroop
 
Odgovor na temu

Divjak
Vladimir Divjak
Student

Član broj: 4783
Poruke: 535
77.46.204.*



+1 Profil

icon Re: ACM zadatak - PIE21.08.2007. u 18:49 - pre 168 meseci
Bila je greška u test setu!

Hvala za onaj site!
And don't be mad at me for crying for humanity,
call it pretensions but I got good intentions,
to keep my sanity, I'm hoping, fuck, there's gotta be
an answer to their strategies and their evil inventions... ~Looptroop
 
Odgovor na temu

[es] :: Art of Programming :: ACM zadatak - PIE

[ Pregleda: 2666 | Odgovora: 5 ] > FB > Twit

Postavi temu Odgovori

Navigacija
Lista poslednjih: 16, 32, 64, 128 poruka.