根据题意,一次性批发和单独批发是独立的,所以我们需要计算这两种方式哪种价格更低即可。
对于单独批发,每件水果一定是从价格更低的批发市场购买,所以取 min 即可。
时间复杂度:O(n)
C++
#include <bits/stdc++.h>
using namespace std;
int main()
{
    ios::sync_with_stdio(false);
    cin.tie(nullptr);
    int n, m;
    cin >> n >> m;
    int sum = 0;
    vector<int> a(n), b(n);
    for (int i = 0; i < n; ++i) cin >> a[i];
    for (int i = 0; i < n; ++i) cin >> b[i];
    for (int i = 0; i < n; ++i) sum += min(a[i], b[i]);
    cout << min(sum, m) << "\n";
    return 0;
}
Java
import java.util.*;
public class Main{
    public static void main(String[] args){
        Scanner in = new Scanner(System.in);
        int n = in.nextInt();
        int m = in.nextInt();
        int[] a = new int[n];
        int[] b = new int[n];
        for(int i = 0; i < n; i ++){
            a[i] = in.nextInt();
        }
        for(int i = 0; i < n; i ++){
            b[i] = in.nextInt();
        }
        int res = 0;
        for(int i = 0; i < n; i ++){
            res += Math.min(a[i], b[i]); 
        }
        System.out.println(res > m ? m : res);
    }
}
Python
import sys
# 输入部分
n, m = map(int, next(sys.stdin).split())
a = list(map(int, next(sys.stdin).split()))
b = list(map(int, next(sys.stdin).split()))
min_ab = 0
# 计算1号和2号批发市场的最小价格
for i in range(n):
    min_ab += min(a[i], b[i])
# 在这三种批发选择下的最低价格
min_price = min(min_ab, m)
# 输出结果
print(min_price)
        小红最近准备整个水果店,需要进 n 件水果。
第 i 件水果在1号批发市场需要 ai 的价格,在2号批发市场需要 bi 的价格。
现在市场还在推行一种新的批发模式,一次性批发 n 件水果。
现在,小红想问你,在这三种批发选择下,他批发这 n 件水果花费的最低价格是多少。
第一行,两个整数 n(1≤n≤105) 和 m(1≤m≤109) ,表示需要进的水果件数和在新的批发模式下,一次性批发 n 种水果的价格 m 。
第二行,n 个整数,第 i 个整数 ai(1≤ai≤104) 表示第 i 件水果在1号批发市场的价格。
第三行,n 个整数,第 i 个整数 bi(1≤bi≤104) 表示第 i 件水果在2号批发市场的价格。
一个整数,表示在这三种批发选择下,小红批发这 n 件水果花费的最低价格。
输入
4 7
1 2 3 4
4 3 2 1
输出
6
说明
第1和2件商品选择1号批发市场,第3和4件商品选择2号批发市场,总价格为 6 ,一次性批发的价格为 7 ,所以答案为 6 。
In following contests: