题目描述
有n个蛋糕和n个人,每个蛋糕的热量是Ci。
第i个人可以选择吃第i或第i+1个蛋糕,第n个人可以选择吃第n或第1个蛋糕。
若一个蛋糕被两个人吃,那么每个人得到的热量是Ci/2.
若一个人改变自己的选择,得到的热量增加,那么他会不满意。
试输出让所有人满意的解,输出每个人吃蛋糕的序号。
题意分析
本题亦可以使用dp,对每个蛋糕设状态被左边吃/右边吃/两边吃/没人吃。
不过我优先考虑到的是若蛋糕i,满足Ci>=2Ci+1,那么第i个人一定会吃这个蛋糕。
所以可以让第i个人吃这个蛋糕,然后让该蛋糕热量变成Ci/2。
考虑通过优先队列进行这个操作。
做完之后,一个人要么已经选好蛋糕了,要么他左右两边不会满足Ci>=2Ci+1的情况,所以只需哪个大取哪个。