Problem zbierania pizzy przez Winklera:
- Okrągłe ciasto do pizzy z
n
plasterkami, w którym plastereki
ma powierzchnię,S_i
tj. Powierzchnia jest inna dla każdego kawałka ciasta. - Zjadacze Alice i Bob na zmianę wybierają plastry, ale niegrzeczne jest tworzenie wielu luk w cieście (uważaj to za niedozwolone).
- Zatem każdy zjadacz jest ograniczony do wzięcia jednego z dwóch plasterków sąsiadujących z otwartym obszarem. Alice jest pierwsza i obaj jedzą tyle ciastek, ile to możliwe.
W jaki sposób algorytm programowania dynamicznego określiłby, ile ciasta zjada Alice, jeśli zarówno Alice, jak i Bob grają idealnie, aby zmaksymalizować zużycie pizzy?
Moje zrozumienie:
W ogólnym problemie DP idziemy dalej do znajdowania podproblemów, które można wizualizować za pomocą drzewa rekurencji lub, ściślej, za pomocą DAG. Tutaj nie znajduję żadnej wskazówki, by znaleźć tutaj pod-problemy.
Tutaj, dla danego zestawu S_i, musimy zmaksymalizować obszar plasterków zjadanych przez Alice. Będzie to zależeć od wyboru permutacji plasterków pizzy spośród permutacji (n-1). Wybranie wycinka o maksymalnej powierzchni spośród dwóch opcji dostępnych w każdych n \ 2 ruchach, jakie otrzyma Alice, da nam całkowitą powierzchnię odcięcia dla permutacji. Musimy znaleźć obszar plasterka dla wszystkich takich permutacji. A potem maksimum z nich.
Czy ktoś może mi pomóc, jak iść naprzód?