MLE超内存了,有没有大佬能优化一下啊!
查看原帖
MLE超内存了,有没有大佬能优化一下啊!
855722
Chin_aliu楼主2023/4/23 18:40
import java.util.PriorityQueue;
import java.util.Scanner;

public class Main {

	public static void main(String[] args) {
		long s1=System.currentTimeMillis();
		Scanner sc=new Scanner(System.in);
		int n=sc.nextInt();//n个果子
		int s=sc.nextInt();//力气
		int a=sc.nextInt();//椅子的高度
		int b=sc.nextInt();//手伸直最大长度
		int[][] arr=new int[n][n];
		for(int i=0;i<n;i++)
		{
			arr[i][0]=sc.nextInt();//高度
			arr[i][1]=sc.nextInt();//要花费的力气
		}
		PriorityQueue<Integer> pr=new PriorityQueue<>();
		for(int i=0;i<n;i++)
		{
			if(arr[i][0]<=a+b)
			{
				pr.add(arr[i][1]);//可以拿到的都放优先队列里
//				System.out.println(arr[i][0]+" "+arr[i][1]);
			}
		}
		int sum=0;
		int count=0;
		while(sum<s)//力气用完就停
		{
			int t=pr.poll();//每次取最小的
			sum+=t;
//			System.out.println(t);
			count++;
		}
		if(sum>s)//他可能超所以要减最后一个
		{
			System.out.println(count-1);
//			System.out.println("s:"+s+" sum:"+sum);
		}else {
			System.out.println(count);
		}
		long s2=System.currentTimeMillis();
		System.out.println(s1);
		System.out.println(s2);
		System.out.println(s2-s1);
	}

}

2023/4/23 18:40
加载中...