牛牛的杂货铺要新进一种糖,这种糖只能一盒一盒的进货,一盒糖里面有 m 块糖。 已知接下来 n 天中,牛牛在第 i 天需要卖出 a_i 块糖,同时第 i 天糖的进货价为 p_i 元/盒。 如果一天中进货的糖没有全部卖出去,可以留到之后继续卖。 现在牛牛想知道自己在达成目标的情况下,最少要在进货糖方面花多少钱。
第一行两个空格分隔的正整数 n,m 。 第二行 n 个空格分隔的正整数 a_i 。 第三行 n 个空格分隔的正整数 p_i 。 含义如题面所述。 1≤ n,m,a_i,p_i ≤ 1000
一行一个正整数代表答案。
3 2 10 1 2 5 1 1000
27
考点:贪心
数据规模 n ≤ 1e3 | 限制 1 秒 / 256MB | 标准输入输出
推荐方向:贪心
本题切入点
糖可以囤货,后一天永远可以用之前更便宜的价进货:维护前缀最低价,按最低价决定当天是否补货。
每一步都取当前最优,靠问题性质保证局部最优能拼成全局最优。
思路框架(贪心 通法 · 非本题专属)
实现要点:贪心题关键在于排序规则:按什么关键字排序决定了策略是否正确。
复杂度:时间 O(n log n)(含排序) | 空间 O(1) ~ O(n)
该范式的通法易错点
对照本题
样例 1:输入 3 2 / 10 1 2 / 5 1 1000 → 输出 27
第一天买 5 盒糖,花 5*5=25 元,刚好足够;第二天买 2 盒糖,花 2 元,卖出一块糖后剩下三块糖,留到第三天卖即可。所以最终花费 25+2=27 元。
解析由校招宝本地引擎整理(依据源站考点标签 / 人工判题标注 / 题面规模信号),非官方题解,仅供思路参考。
本题来源:贝壳找房2023届校招算法卷2。