import java.util.*; public class Main {     public static void main(String[] args) {         Scanner sc = new Scanner(System.in);         int n = sc.nextInt();         int m = sc.nextInt();         int count = 0;         ArrayList<Integer> list = new ArrayList<>();         // 将面值放入一个list里,数量大于1则重复,如[100, 50, 50, 10, 1]         for (int i = 0; i < n; i++) {             int key = sc.nextInt();             int value = sc.nextInt();             for (int j = 0; j < value; j++) {                 list.add(key);             }         }         int str = 0, end = list.size() - 1;         // 两个指针 分别指向头部和尾部 [100, 50, 50, 10, 1]         for (int i = 0; i < end; i++) {             // 如果当前值大于工资则直接除              if (list.get(i) >= m) {                 count += list.get(i) / m;             }// 如果当前值小于工资,如50 < 51,则从列表最后的             // 最小的那批面值开始相加,直到付得起工资为止。             else{                 int sum = list.get(i);                 while(sum < m && i < end){                     sum += list.get(end);                     end--;                 }                 if(sum >= m){                     count++;                 }             }         }         System.out.println(count);     } } 求教大佬,我感觉我java的思路没问题,就是如果小于面值,就优先从小面额开始相加,但是只过了40%,😭
点赞 5

相关推荐

牛客网
牛客企业服务