又学到了新的表的用法
import java.util.HashMap;
import java.util.Map;
import java.util.Scanner;
public class Main {
public static void main(String[] args) {//垦田计划(合卷方案)
Scanner as=new Scanner(System.in);
int n=as.nextInt();//开垦区域数量
int m=as.nextInt();//资源的总数 (变量)
int k=as.nextInt();//最少开垦天数
HashMap<Integer,Integer> Biao=new HashMap<>();//由于普通的数组要定义长度因此不适合用于本题
int maXX=0;//记录初始开垦时间最大值
for(int i=0;i<n;i++){
int a=as.nextInt();//初始耗时
int b=as.nextInt();//减少一天所需要的资源
Biao.put(a,Biao.getOrDefault(a,0)+b);//合并初始开垦时间相同的土地
maXX=Math.max(a,maXX);//更新最大的初始开垦时间最大值
}
int jieGuo=maXX;//结果单位是天
int juna=0;
for(int i=maXX;i>=k;i--){//这里参与计算的基本都是资源的数值,天数仅做计数作用
if(m<Biao.getOrDefault(i,0)+juna) break; //检测还能否”卷“走当前的土地
juna+=Biao.getOrDefault(i,0);//“卷走”当前开垦时间的土地
m-=juna;//每次循环对应减少一天消耗的资源
jieGuo--;//每回合都往回"卷"
}
System.out.println(jieGuo);
}
}
//这个方法就像将下面的图形从右至左卷起来,然后每过一天就减掉一次之前卷起来的东西
/
///
// 1天 2 3 4