G626061. [GESP202606 六级 C++] 26. 条形蛋糕

提交11 通过5
通过率45.5%
时间限制1000ms
内存限制512MiB
    ID: 641 传统题 1000ms 512MiB 尝试: 11 已通过: 5 难度: 普及- 上传者: 标签>背包问题编程题c++动态规划 DP背包 DP1星

题目描述

寒假到了,小泽同学打算找一份兼职,顺便体验一下打工人的生活。

小泽同学给一家蛋糕店发送了一份自己的简历,希望可以在寒假来这里帮忙。店长最近正好遇到了一个难题:店里每天会做一条长条蛋糕,但是不同长度的蛋糕块卖出的价格不同,应该怎么分才能卖得最多呢?

有趣的是店长曾经学习过计算机专业。他最近对动态规划算法很感兴趣,于是打算用这个问题考一考小泽同学,问题如下:

  • 给定一条长度为 nn 的长条蛋糕和一个价格表,该价格表表示长度为 ii (i=1,2,…,ni = 1, 2, \dots, n) 的蛋糕块的价格为 pip_i。求蛋糕的分割方案,使得总销售价格最大,注意蛋糕块的长度必须为整数。

输入格式

第一行一个正整数 nn ,表示长条蛋糕的总长度。

第二行 nn 个正整数 p1,p2,…,pnp_1, p_2, \dots, p_n ,表示不同长度蛋糕块的价格。

输出格式

一行一个正整数,表示最大总销售价格。

4
1 5 8 9
10
10
1 5 8 9 10 17 17 20 24 30
30

数据范围

(1≤n≤1031 \le n \le 10^3)

(1≤pi≤1051 \le p_i \le 10^5)