题解 AT5758 【Nice Shopping】

· · 题解

ChungZH's blog · ChungZH's portfolio

题目

您正在逛一家大型电子产品商店,购买冰箱和微波炉。

这家商店出售 A 类冰箱和 B 类微波炉。第 i 台冰箱 (1 \le i \le)a_i 日元出售,第 j 个微波炉 (1 \le j \le B) 售价为 b_j 日元。

您有 M 张优惠票。使用第 i 张票 (1 \le i \le M),当一起购买第 x_i 个冰箱和第 y_i 个微波炉时,您可以从总价格中获得 c_i 日元的折扣。一次只能使用一张票。

您打算购买一台冰箱和一台微波炉。 找到所需的最低金额。

题解

模拟模拟模拟。

首先找到最便宜的冰箱和微波炉的总价,然后输入 M 张优惠券的信息,比较哪个便宜,计入变量,最后输出。

#include <bits/stdc++.h>
using namespace std;

int A, B, M;
int main() {
  cin >> A >> B >> M;
  int a[A], b[B];
  int minA = 1e9;
  int minB = 1e9;
  for (int i = 0; i < A; i++) {
    cin >> a[i];
    minA = min(minA, a[i]);
  }
  for (int i = 0; i < B; i++) {
    cin >> b[i];
    minB = min(minB, b[i]);
  }
  int ans = minA + minB;

  int x, y, c;
  for (int i = 0; i < M; i++) {
    cin >> x >> y >> c;
    x--;
    y--;
    ans = min(ans, a[x] + b[y] - c);
  }
  cout << ans << endl;
  return 0;
}