時には私は 'codeforces.org'の問題を解決し、すべての解決の後に私はothers.Butのソリューションの多くは非常に多くのコードを含んでいます。 例: 問題のコードを書いたDomino Piling次のようです。私たちが見るものcodeforces
で2位にランク人々は競合するプログラミングでソリューションを書くのに非常に多くのコードを使用するのはなぜですか?
import java.util.*;
public class Main{
public static void main(String[] args){
Scanner in = new Scanner(System.in);
int m = in.nextInt(), n = in.nextInt();
int count = n*(m/2);
if(m%2 == 1)
count += n/2;
System.out.println(count);
in.close();
}
}
しかしpetr
は、彼が糸を使用し、彼自身のカスタマイズされた入力/出力がtechnique.But私は理解しておりませんことをここで
import java.io.*;
import java.util.*;
public class Template implements Runnable {
private void solve() throws IOException {
int n = nextInt();
int m = nextInt();
writer.println(n * m/2);
}
public static void main(String[] args) {
new Template().run();
}
BufferedReader reader;
StringTokenizer tokenizer;
PrintWriter writer;
public void run() {
try {
reader = new BufferedReader(new InputStreamReader(System.in));
tokenizer = null;
writer = new PrintWriter(System.out);
solve();
reader.close();
writer.close();
} catch (Exception e) {
e.printStackTrace();
System.exit(1);
}
}
int nextInt() throws IOException {
return Integer.parseInt(nextToken());
}
long nextLong() throws IOException {
return Long.parseLong(nextToken());
}
double nextDouble() throws IOException {
return Double.parseDouble(nextToken());
}
String nextToken() throws IOException {
while (tokenizer == null || !tokenizer.hasMoreTokens()) {
tokenizer = new StringTokenizer(reader.readLine());
}
return tokenizer.nextToken();
}
}
のように、このソリューションを書いた理由は、彼このようなこのソリューションを解決し、独自のカスタマイズされたI/O技術の必要性は何ですか? 彼の長いコードに加えて、コードの実行時間が私よりも優れているということが私に最も印象的なことがあります。彼のコード実行時間は「90ミリ秒」で、私の時間は「248ミリ秒」です。
誰も私の理由を説明できますか?
これはマルチスレッドではありません。彼はクラスのインスタンスを作成したので、各メソッドを静的にする必要はありません。私はなぜ彼が 'Runnable'を実装しているのか分かりません。 – Gendarme
追加コードの大半は、スキャナの代わりに使用されるため、パフォーマンス面でより効率的です。おそらく、それぞれの問題に対して 'solve'の外にあるすべてのコードを再利用します。 – assylias
このような課題に定期的に参加する人は、「テンプレート」という名前が示すように、事前に用意されたコードがすでにあるかもしれません。その後、数行だけカスタマイズする必要があります。 – user140547