Kabaleo Lite

杨宏儒
2023-12-01

题意:有n盘菜,每盘菜有一定的利润和数量,每位顾客必须从第一盘菜上起,并且上的菜必须是连续的,即如果这盘上的是第i盘,则下一盘必是i+1,上一盘是i-1,问最多有多少个顾客能上菜,此时利润最大是多少?(英语不好,可能不是很准确)

比赛的时候一言难尽。。。英语不好只能机翻,翻出来并没有从第一盘开始这意思,我太难了。因为必须从第一盘菜上起,所以做多能上的数量即为第一盘菜的数量。

然后我们讨论如何得到最大利润,因为我们上的菜必须是连续的,所以获得的利润要用前缀和来计算,而且菜必须是连续的,所以一个最大利润的方案能进行的次数由这个方案中数量最少的菜决定。我们只需要对前缀和进行排序,因为排序默认排序条件相等时原来在前面的排完序后仍在前,而方案越长其执行数量一定小于等于方案短的执行数量,因此利润相同的方案我们只需执行长度最短的方案即可。

同时注意数据范围是1e91e51e5=1e19,已经超了,所以要用高精或 __int128或者java的大数类。

 类似资料:

相关阅读

相关文章

相关问答