#17. 【华为OD统一考试B卷 | 200分】导师请吃火锅

【华为OD统一考试B卷 | 200分】导师请吃火锅

题目链接

【华为OD统一考试B卷 | 200分】导师请吃火锅(C++ Java JavaScript Python)

https://blog.csdn.net/banxia_frontend/article/details/129877961 |

因平台的限制 =》无法直接查看用例,为了方便刷题,博主把本题全部用例放在了文章中,请自行查看!!! 因为用例是博主手工制作,难免存在用例错误的情况,遇到这种情况可以直接反馈给博主 有一些极端的例子,不符合题目意思的例子,主要是用来检验代码的鲁棒性。大家可以忽略。

贪心解法

import java.util.Arrays;
import java.util.Scanner;
 
public class Main {
  public static void main(String[] args) {
    Scanner sc = new Scanner(System.in);
 
    int n = sc.nextInt();
    int m = sc.nextInt();
 
    int[] suit = new int[n];
    for (int i = 0; i < n; i++) {
      suit[i] = sc.nextInt() + sc.nextInt();
    }
 
    System.out.println(getResult(n, m, suit));
  }
 
  public static int getResult(int n, int m, int[] suit) {
    Arrays.sort(suit);
 
    int count = 1; // 第1个合适的菜必吃
    int pre = 0;
    for (int i = 1; i < suit.length; i++) {
      if (suit[i] >= suit[pre] + m) {
        // 如果想要捞本次合适的菜,则必须要与上次捞菜的时间差大于等于m,注意这里是suit[pre] + m ,而不是suit[i-1] + m
        count++;
        // 如果本次捞了菜,则更新缓存本次捞菜的时间点
        pre = i;
      }
    }
    return count;
  }
}