只剩下最后三个MLE了。我在网上找了一些快读的模板,多次尝试无果,求助。(其中一个模板让我通过了另一题的MLE,这次不管用了,是否是别的原因导致MLE?)
之前的错误是:
```java
if(x<=m) sum+=query(p<<1,x,m,a);
if(y>m) sum+=query(p<<1|1,m+1,y,a);
```
应当改为
```java
if(x<=m) sum+=query(p<<1,x,y,a);
if(y>m) sum+=query(p<<1|1,x,y,a);
```
by 190859136kkkk @ 2024-03-25 17:44:05
我的瓶颈在Scanner,我把输入改成这个就能过了,输出可以不改。
```java
static class Reader {
static BufferedReader reader;
static StringTokenizer tokenizer;
/** 调用这个方法来初始化reader,即InputStream*/
static void init(InputStream input) {
reader = new BufferedReader(new InputStreamReader(input));
tokenizer = new StringTokenizer("");
}
/** 获取下一段文本 */
static String next() throws IOException {
while ( ! tokenizer.hasMoreTokens() ) {
tokenizer = new StringTokenizer(reader.readLine());
}
return tokenizer.nextToken();
}
static int nextInt() throws IOException {
return Integer.parseInt( next() );
}
static double nextDouble() throws IOException {
return Double.parseDouble( next() );
}
}
```
你这里我看用到了ArrayList,但ArrayList在空间不足时是会按照1.5倍动态扩容的,那么你这个ArrayList实际申请的空间可能是超过你这个4n的,可能也是导致MLE的因素。
by running__coder @ 2024-04-07 21:27:51