这段代码运行正常,但对于我提交它的地方来说太慢了......
我正在进行澳大利亚信息学竞赛,此代码必须在0.5秒内运行。 一些问题需要0.4,这是正确的,但它超时,否则这是废话! 有没有办法让它更快? Plzz
这是:
import java.io.BufferedWriter;
import java.io.File;
import java.io.FileWriter;
import java.io.IOException;
import java.util.ArrayList;
import java.util.Scanner;
public class Solution {
public static void main(String[] args) throws IOException{
Scanner input = new Scanner(new File("encyin.txt"));
BufferedWriter output = new BufferedWriter(new FileWriter("encyout.txt"));
int length = input.nextInt();
int questions_length = input.nextInt();
ArrayList<Integer> page_words = new ArrayList<Integer>();
ArrayList<Integer> questions = new ArrayList<Integer>();
while(input.hasNextInt() && page_words.size() < length) {
page_words.add(input.nextInt());
}
while(input.hasNextInt() && questions.size() < questions_length) {
questions.add(input.nextInt()-1);
}
for (int i = 0; i<questions.size(); i++) {
output.write(String.valueOf(page_words.get(questions.get(i))+"\n"));
}
input.close();
output.close();
}
}
谢谢你们:)
答案 0 :(得分:-1)
在生产者/消费者模型中使用两个线程,但这只有在您不受IO约束时才有用。即使你不受IO限制,如果它是一个寻道时间很长的单个磁盘,你可能会让事情变得更糟。
但实际上,你可能已经受到IO限制了。扫描程序也可能没有使用缓冲IO。