56分求助MLE
查看原帖
56分求助MLE
650104
smohax楼主2023/4/1 19:41
import java.io.*;

public class Main{
	static int N,M,k,len;
	static int[][] dp;
	static int[] log;//预处理
	public static void main(String[] args) throws IOException{
		in in = new in();//快速输入
		PrintWriter out = new PrintWriter(new OutputStreamWriter(System.out));//快速输出
		N = in.next();
		M = in.next();
		k = (int)(Math.log(N)/Math.log(2)) + 1;
		dp = new int[N][k]; //初始化ST表
		log = new int[N + 1]; 
		for(int i = 0;i < N;i++) 
			dp[i][0] = in.next();
		st();
		for(int i = 0;i < M;i++) {
			out.println(ans(in.next()-1,in.next()-1));
		}
		out.flush();
		}
	static void log(int i) {//预处理log
		if(log[i] == 0)
			log[i] = (int)(Math.log(i)/Math.log(2));//log2(N)
	}
	static void st() {
		for(int j = 1;j <= k;j++) 
			for(int i = 0;i + (1 << j) -1 < N;i++) 
				dp[i][j] = Math.max(dp[i][j-1],dp[i+(1 << (j-1))][j-1]);
	}
	static int ans(int l,int r) {//询问
		len = (r - l + 1);
		log(len);
		return Math.max(dp[l][log[len]], dp[r - (1 << log[len]) + 1][log[len]]);
	}
}
class in{
	StreamTokenizer in = new StreamTokenizer(new BufferedReader(new InputStreamReader(System.in)));
	int next() throws IOException{
		in.nextToken();
		return (int)in.nval;
	}
}
```求助大佬!java后5个爆MLE 爆内存了!
2023/4/1 19:41
加载中...