讨厌鬼购物

[题目链接](https://www.nowcoder.com/practice/61d88882485e4a49bfc26c517ca169bd)

思路

有两家店 ,出售相同的 类商品。第 类商品在 店售价 元、评分 分,在 店售价 元、评分 分。

如果某类商品在其中一家店的价格严格更低评分严格更高,讨厌鬼就一定会买。问一共有多少类商品一定会被购买。

判定条件

对第 类商品,满足以下任一条件即可:

  • (在 店买更划算)
  • (在 店买更划算)

直接遍历所有商品,逐个判断即可。

复杂度

  • 时间复杂度:
  • 空间复杂度:

代码

[sol-C++]

#include <bits/stdc++.h>
using namespace std;
int main(){
    int n;
    scanf("%d",&n);
    vector<int> a(n),b(n),sa(n),sb(n);
    for(int i=0;i<n;i++) scanf("%d",&a[i]);
    for(int i=0;i<n;i++) scanf("%d",&b[i]);
    for(int i=0;i<n;i++) scanf("%d",&sa[i]);
    for(int i=0;i<n;i++) scanf("%d",&sb[i]);
    int ans=0;
    for(int i=0;i<n;i++){
        if((a[i]<b[i] && sa[i]>sb[i]) || (b[i]<a[i] && sb[i]>sa[i]))
            ans++;
    }
    printf("%d\n",ans);
    return 0;
}

[sol-Java]

import java.util.Scanner;
public class Main {
    public static void main(String[] args) {
        Scanner sc = new Scanner(System.in);
        int n = sc.nextInt();
        int[] a = new int[n], b = new int[n], sa = new int[n], sb = new int[n];
        for (int i = 0; i < n; i++) a[i] = sc.nextInt();
        for (int i = 0; i < n; i++) b[i] = sc.nextInt();
        for (int i = 0; i < n; i++) sa[i] = sc.nextInt();
        for (int i = 0; i < n; i++) sb[i] = sc.nextInt();
        int ans = 0;
        for (int i = 0; i < n; i++) {
            if ((a[i] < b[i] && sa[i] > sb[i]) || (b[i] < a[i] && sb[i] > sa[i]))
                ans++;
        }
        System.out.println(ans);
    }
}

[sol-Python3]

n = int(input())
a = list(map(int, input().split()))
b = list(map(int, input().split()))
sa = list(map(int, input().split()))
sb = list(map(int, input().split()))
ans = 0
for i in range(n):
    if (a[i] < b[i] and sa[i] > sb[i]) or (b[i] < a[i] and sb[i] > sa[i]):
        ans += 1
print(ans)

[sol-JavaScript]

const readline = require('readline');
const rl = readline.createInterface({ input: process.stdin });
const lines = [];
rl.on('line', line => lines.push(line.trim()));
rl.on('close', () => {
    const n = parseInt(lines[0]);
    const a = lines[1].split(' ').map(Number);
    const b = lines[2].split(' ').map(Number);
    const sa = lines[3].split(' ').map(Number);
    const sb = lines[4].split(' ').map(Number);
    let ans = 0;
    for (let i = 0; i < n; i++) {
        if ((a[i] < b[i] && sa[i] > sb[i]) || (b[i] < a[i] && sb[i] > sa[i]))
            ans++;
    }
    console.log(ans);
});