题目求助,动态规划?
acm吧
全部回复
仅看楼主
level 1
FinkyS 楼主
小明在超市购买了n个商品,每个商品有一个正的价格x。超市的计价规则如下:
对于单个商品或合并后的商品:
如果价格x < 1,则向上取整为1
如果价格x ≥ 1,则四舍五入取整 (如2.4算作2 2.5算作3)
在计价前,你可以进行任意次数的商品合并操作。合并操作是将两个相邻的商品价格相加,合并后的商品可以继续参与合并
你的目标是通过合理的合并操作,使得所有商品计价后的总金额最小,并输出具体的合并方案。
输入格式
第一行包含一个整数n (1 ≤ n ≤ 500),表示商品的数量
第二行包含n个实数x₁, x₂, ..., xₙ (0 < xᵢ ≤ 1000) (x最多5位小数),表示每个商品的价格
输出格式
第一行输出一个整数,表示通过最优合并后得到的最小总金额
第二行开始输出合并方案,每一行代表合并在一起计价的商品下标(下标从1开始)
样例输入1
5
2.76 1.68 2.77 1.95 0.8
样例输出1
9
1 3 4
2 5
2025年06月10日 07点06分 1
吧务
level 10
需要确定每个位置是否往后合并,试递推只考虑前i件商品的最小代价Ans_i
对于Ans_k,其对应的最优方案pi_k中″在k之前最后一个不往后合并的位置″假设其为j,则pi_k在j及之前的最小代价为Ans_j(合并策略可模仿pi_j,但不能比pi_j做得更好,否则不符合pi_j″最优方案的定义)
枚举j的所有可能性,每个j的最优解取最值得全局最优解,有Ans_k=max_{j∈[0,k)} Ans_j+F_{j+1,k}
F_{j,k}代表将段[j,k]全部合并后的计价
2025年06月11日 08点06分 2
1