Winkler'ın pizza toplama sorunu:
- Dilimin alanı
n
olduğu dairesel bir dilim pizzalı pasta, yani alan her pasta parçası için farklıdır.i
S_i
- Yiyenler Alice ve Bob sırayla dilimleri toplarlar, ancak pastada birden fazla boşluk oluşturmak kaba olur (izin verilmediğini düşünün).
- Bu nedenle her yiyici, açık bölgeye bitişik iki dilimden birini almakla sınırlıdır. Alice önce gelir ve her iki yiyen de mümkün olduğunca fazla pasta arar.
Hem Alice hem de Bob pizza tüketimini en üst düzeye çıkarmak için mükemmel oynarsa, dinamik bir programlama algoritması Alice'in ne kadar pasta yediğini nasıl belirler?
Benim anlayışım:
Genel bir DP probleminde, özyineleme ağacı kullanılarak veya daha sıkı bir şekilde bir DAG kullanılarak görselleştirilebilen alt problemler bulmaya devam ediyoruz. Burada, alt problemleri bulmak için herhangi bir ipucu bulamıyorum.
Burada, belirli bir S_i s seti için Alice tarafından yenen dilim alanını en üst düzeye çıkarmamız gerekiyor. Bu, (n-1) permütasyonlarından Pizza dilimlerinin permütasyonunun seçilmesine bağlı olacaktır. Alice'in aldığı her n \ 2 dönüşte iki seçenek arasından bir maksimum alan dilimi seçmek, bize bir permütasyon için toplam dilim alanını verecektir. Tüm bu permütasyonlar için dilim alanı bulmamız gerekiyor. Ve sonra bunlardan maksimum.
Biri bana nasıl ilerleyeceğim konusunda yardım edebilir mi?