java空间如何优化
查看原帖
java空间如何优化
1094889
xrqqqqq楼主2024/1/26 22:44

java代码空间如何优化,全MLE,N为1e5过49,后MLE

以下是代码



import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
import java.io.OutputStreamWriter;
import java.io.PrintWriter;
import java.io.StreamTokenizer;

public class Main {
	static int n,m;
	static final int N = (int)1e5+10;
	static int dp[][] = new int[N][21];


	public static void main(String[] args) throws IOException{
		
		StreamTokenizer in = new StreamTokenizer(new BufferedReader(new InputStreamReader(System.in)));
		PrintWriter cout = new PrintWriter(new OutputStreamWriter(System.out));
		in.nextToken();
		n = (int) in.nval;
		in.nextToken();
		m = (int) in.nval;
		for(int i = 1; i <= n; ++i) {
			in.nextToken();
		
			dp[i][0] = (int) in.nval;
		}
		for(int j = 1; (1<<j) <= n; ++j)
			for(int i = 1; i + (1<<j)-1 <=n; ++i)
				dp[i][j] = Math.max(dp[i][j-1], dp[i+(1<<(j-1))][j-1]);
	
		while(m--!=0) {
			in.nextToken();
			int l = (int) in.nval;
			in.nextToken();
			int r = (int) in.nval;
			cout.println(f(l,r));
		}
		cout.flush();
	}
	static int f(int l, int r) {
		 int len = r - l + 1;
		int k = (int)(Math.log(len) / Math.log(2)) ;
		return Math.max(dp[l][k],dp[r-(1<<k)+1][k]);
	}

}

2024/1/26 22:44
加载中...