秋招模拟赛第40场|2023.09.02-京东
- Status
- Done
- Rule
- IOI
- Problem
- 4
- Start at
- 2023-9-7 19:00
- End at
- 2023-9-7 20:30
- Duration
- 1.5 hour(s)
- Host
- Partic.
- 22
You cannot submit for this problem because the contest is ended. You can click "Open in Problem Set" to view this problem in normal mode.
根据题意,一次性批发和单独批发是独立的,所以我们需要计算这两种方式哪种价格更低即可。
对于单独批发,每件水果一定是从价格更低的批发市场购买,所以取 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 。