java求调,第二个AC,最后三个MLE,其他WA

P3372 【模板】线段树 1

只剩下最后三个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


|