[题解][洛谷P3584] LAS
题目描述
有n个蛋糕和n个人,每个蛋糕的热量是Ci。
第i个人可以选择吃第i或第i+1个蛋糕,第n个人可以选择吃第n或第1个蛋糕。
若一个蛋糕被两个人吃,那么每个人得到的热量是Ci/2.
若一个人改变自己的选择,得到的热量增加,那么他会不满意。
试输出让所有人满意的解,输出每个人吃蛋糕的序号。
题意分析
本题亦可以使用dp,对每个蛋糕设状态被左边吃/右边吃/两边吃/没人吃。
不过我优先考虑到的是若蛋糕i,满足Ci>=2Ci+1,那么第i个人一定会吃这个蛋糕。
所以可以让第i个人吃这个蛋糕,然后让该蛋糕热量变成Ci/2。
考虑通过优先队列进行这个操作。
做完之后,一个人要么已经选好蛋糕了,要么他左右两边不会满足Ci>=2Ci+1的情况,所以只需哪个大取哪个。
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】凌霞软件回馈社区,博客园 & 1Panel & Halo 联合会员上线
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】博客园社区专享云产品让利特惠,阿里云新客6.5折上折
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 在鹅厂做java开发是什么体验
· 百万级群聊的设计实践
· WPF到Web的无缝过渡:英雄联盟客户端的OpenSilver迁移实战
· 永远不要相信用户的输入:从 SQL 注入攻防看输入验证的重要性
· 浏览器原生「磁吸」效果!Anchor Positioning 锚点定位神器解析