Matematické Fórum

Nevíte-li si rady s jakýmkoliv matematickým problémem, toto místo je pro vás jako dělané.

Nástěnka
22. 8. 2021 (L) Přecházíme zpět na doménu forum.matweb.cz!
04.11.2016 (Jel.) Čtete, prosím, před vložení dotazu, děkuji!
23.10.2013 (Jel.) Zkuste před zadáním dotazu použít některý z online-nástrojů, konzultovat použití můžete v sekci CAS.

Nejste přihlášen(a). Přihlásit

#1 09. 05. 2011 23:53

hessyk
Příspěvky: 86
Reputace:   
 

jeden proti stu

ahoj, narazil jsem na jednu ulohu u ktere nemuzu prijit na to jak by se to melo resit...jestli nekdo vite jaky algoritmus na to je, tak prosim napiste
dekuji moc

Účastníte se soutěže, ve které máte proti sobě sto soupeřů. Soutěž bude trvat k kol. V každém kole můžete některé soupeře vyřadit ze soutěže (vždy nejméně jednoho) a za jejich vyřazení dostanete odměnu.

Odměna za vyřazení v soupeřů z počtu p je

100.000,- * v / p

Počítáno v celých číslech (tzn. dolní celá část).

Tedy například když v prvním kole vyřadíte 50 soupeřů z počátečních 100, získáte 50.000,-. Když ve druhém kole ze zbylých 50 vyřadíte 30, získáte 100.000,- * 30/50 = 60.000,- a máte celkem 110.000,- Když v posledním kole vyřadíte posledních 20 soupeřů, získáte 100.000,- * 20/20 = 100.000,- a váš celkový zisk bude 210.000,-

Napište program, který pro zadaný počet kol určí a vytiskne maximální možný zisk a na další řádek počty soupeřů (oddělené mezerou),které máte vyřazovat v jednotlivých kolech.

Příklad:
Vstup:
  3
Výstup:
  280000
  90 9 1

Offline

 

#2 10. 05. 2011 08:32

OiBobik
Moderátor
Místo: Brno/Praha
Příspěvky: 1013
Škola: MFF UK Mat. struktury
Pozice: student
Reputace:   82 
 

Re: jeden proti stu

↑ hessyk:

Je to zase úloha na dynamické programování. Zkus se zamyslet, jak by mohla vypadat tabulka, do které budeš ukládat nějaké ty "optimální mezivýpočty".

(konkrétně tento příklad mi přijde dost podobný jako ta abeceda, jen o něco snazší)


"The first rule of Tautology Club is the first rule of Tautology Club." [xkcd]

Offline

 

#3 11. 05. 2011 19:51

hessyk
Příspěvky: 86
Reputace:   
 

Re: jeden proti stu

vis problem je v tom, ze jsem vubec nepochopil co mam vlastne delat...ani na tom prikladu m i to porad nejak nejde do hlavy...mohl bys mi rovnou vysvetlit to zadani? dekuji moc za ochotu

Offline

 

#4 11. 05. 2011 20:09 — Editoval OiBobik (11. 05. 2011 20:11)

OiBobik
Moderátor
Místo: Brno/Praha
Příspěvky: 1013
Škola: MFF UK Mat. struktury
Pozice: student
Reputace:   82 
 

Re: jeden proti stu

↑ hessyk:

No, cíl je klasický, jako v polovině úloh na dynamické programování - něco maximaloizovat (výhru).

Hra je následující:

Na začátku má soutěžící proti sobě 100 soupeřů.

V každém kole se vyřadí nějaký nenulový počet soupeřů (v různých kolech různý, ale označme si jej teď pro nějaké konkrétní kolo v) ze zbývajícího počtu soupeřů (označme jej pro to stejné konkrétní kolo p); Za toto uvažované kolo vyhraje soutěžící 100000*p/v peněz. Jakmile vyřadí soutěžící všech sto soupeřů, vyhrává s celkovou sumou, kterou v průběhu hry získal.

No a ty máš napsat program / rozmyslet algoritmus takový, že když ti někdo zadá nějaký počet kol K, po který má soutěž probíhat (tedy přesně v K-tém kole vyřadíme posledního soupeře), tak program určí, kolik se má v konkrétních kolech vyřadit soupeřů tak, aby výhra byla maximální.

Tedy na vstupu programu bude třeba 2 (tj "soutěž bude probíhat 2 kola")
No a program odpoví:
199 000 ("maximální výhra je 199 000")
99
1 ("první kolo vyřaď všechny soupeře až na jednoho - získáš 99 000, a v druhém kole zbývajícího soupeře - získáš dalších 100 000")

Algoritmus i ta stěžejní matice jsou velmi podobné, jako u těch tlačítek a abecedy (na rozdíl od např. těch dvou loděk - ty mi přišly těží, špatně se představují).


"The first rule of Tautology Club is the first rule of Tautology Club." [xkcd]

Offline

 

#5 18. 05. 2011 00:08

hessyk
Příspěvky: 86
Reputace:   
 

Re: jeden proti stu

ahoj, tak dekuji za vysvetleni zadani, uz to zcela chapu...prijdu si ale trochu nechapavy protoze stejne jako s tou abecedou vubec nevim jak by mel ten algoritmus vypadat...mohl bys me prosim alespon navest jak by to melo vypadat...i kdyz uz nad tim premyslim zhruba dva tydny a nic me nenapada...
dekuji moc za trpelivost

Offline

 

#6 18. 05. 2011 00:32

OiBobik
Moderátor
Místo: Brno/Praha
Příspěvky: 1013
Škola: MFF UK Mat. struktury
Pozice: student
Reputace:   82 
 

Re: jeden proti stu

↑ hessyk:

A abecedu užs teda pochopil... ? : )

Tady je to totiž dost podobné. V zásadě si jen vytvoříme tabulku Sij velikosti (počet kol) x 100, v políčku Sij bude optimální zisk takový, že po odehrání i-tého kola bude vyřazeno přesně j protihráčů. Políčko tabulky se bude vyplňovat prakticky stejně, jako u abecedy (mrknu na možnosti, kolik jsem jich mohl mít vyřazeno po minulém kole a kolik jsem za to mohl vydělat, přičtu k tomu, kolik bych vydělal, kdybych dovyhazoval zbylý počet hráčů do j, no a z těchto čísel vezmu tentokrát maximum, jelikož mi jde o to, maximalizovat zisk).


"The first rule of Tautology Club is the first rule of Tautology Club." [xkcd]

Offline

 

Zápatí

Powered by PunBB
© Copyright 2002–2005 Rickard Andersson