題目描述
有n個蛋糕和n個人,每個蛋糕的熱量是Ci。
第i個人可以選擇吃第i或第i+1個蛋糕,第n個人可以選擇吃第n或第1個蛋糕。
若一個蛋糕被兩個人吃,那麼每個人得到的熱量是Ci/2.
若一個人改變自己的選擇,得到的熱量增加,那麼他會不滿意。
試輸出讓所有人滿意的解,輸出每個人吃蛋糕的序號。
題意分析
本題亦可以使用dp,對每個蛋糕設狀態被左邊吃/右邊吃/兩邊吃/沒人吃。
不過我優先考慮到的是若蛋糕i,滿足Ci>=2Ci+1,那麼第i個人一定會吃這個蛋糕。
所以可以讓第i個人吃這個蛋糕,然後讓該蛋糕熱量變成Ci/2。
考慮透過優先佇列進行這個操作。
做完之後,一個人要麼已經選好蛋糕了,要麼他左右兩邊不會滿足Ci>=2Ci+1的情況,所以只需哪個大取哪個。