Próbowałem rozwiązać pytanie dotyczące praktyki w sprawie SPOJ https://www.spoj.pl/problems/DIEHARD/. Jednak oba moje chciwe podejście spowodowało Wrong Answer i rekurencja była zbyt wolna dla najgorszego przypadku.Czy ktoś może powiedzieć, jak podejść do tego problemu? Szukam kogoś, kto wskaże mi właściwy kierunek.Jakie jest prawidłowe podejście do rozwiązania SPOJ DIEHARD?
Gra jest prosta. Początkowo masz "H" ilość zdrowia i "A" ilość zbroi. W każdej chwili możesz żyć w dowolnym z trzech miejsc - ognia, wody i powietrza. Po każdej jednostce czasu musisz zmienić miejsce zamieszkania. Na przykład, jeśli obecnie żyjesz w ogniu, możesz wejść do wody lub powietrza.
- Jeśli krok w powietrzu, swojego zdrowia wzrasta o 3 i pancerz zwiększa się o 2
- Jeśli wejdziesz do wody, twoje spadki zdrowia o 5 i wasze spadki pancerz o 10
Jeśli krok w ogniu Twoje zdrowie zmniejsza się o 20 i pancerz zwiększa się o 5Jeśli twoje zdrowie lub pancerz staje < = 0, umrzesz natychmiast
Znajdź maksymalny czas można przetrwać.
Wejście:
Pierwsza linia składa się z liczb całkowitych t, liczba testowych. Dla każdego przypadku testowego będą dwie dodatnie liczby całkowite reprezentujące początkowe zdrowia H i początkowy pancerza A.
wyjściowa:
Dla każdego przypadku testowego znaleźć maksymalny czas można przetrwać.
Jaki jest maksymalny wejścia H i A? –
"Ograniczenia wejściowe: 1 <= t <= 10 1 <= H, A <= 1000 " –
Czy próbowałeś chciwego rozwiązanie? Idź do powietrza, gdy tylko jest to możliwe, ponieważ to zwiększa wszystko, w przeciwnym razie, jeśli zbroja> zdrowie pójdzie do wody inaczej, jeśli nie zabijesz, pójdziesz do ognia. – IVlad