题目描述新学期伊始,适逢顿顿书城有购书满 x 元包邮的活动,小 P 同学欣然前往准备买些参考书。 试帮助小 P 计算,最终选购哪些书可以在凑够 x 元包邮的前提下花费最小? 输入格式从标准输入读入数据。 输入的第一行包含空格分隔的两个正整数 n 和 x,分别表示购物车中图书数量和包邮条件。 接下来输入 n 行,其中第 i 行(1≤i≤n)仅包含一个正整数 ai,表示购物车中第 i 本书的价格。输入数据保证 n 本书的价格总和不小于 x。 输出格式输出到标准输出。 仅输出一个正整数,表示在满足包邮条件下的最小花费。 |
这道题,我刚开始是使用DFS暴力递归来枚举所有可能的情况,不出我所料,只得了70分;以下是我得分70的代码:
# include <iostream>
# include <algorithm>
# include <vector>
# define maxn 300010
using namespace std;
int n, x;
int minx = maxn;
vector<int>

本文探讨了一种利用动态规划优化算法解决学生小P在新学期购书时如何在满足包邮条件下选择书籍以实现最小花费的问题。通过将问题转化为背包问题,展示了如何通过递推关系求解不超过包邮金额的最大价值组合,从而找到最优选购方案。
最低0.47元/天 解锁文章
5627





