На самом деле, есть несколько способов обработки входных данных в Java в конкурентном программировании.
Подход 1: Использование java.util.Scanner
Это самый простой способ чтения для ввода, и он также очень прост в использовании.Это может быть медленно, если у вас есть огромное количество ввода.Если ваша программа продолжает получать TLE (превышено ограничение по времени), но ваша программа имеет правильную временную сложность, попробуйте прочитать ввод с помощью второго или третьего подхода.
Инициализация Scanner sc = new Scanner(System.in);
Чтение целого числа: int n = sc.nextInt();
Подход 2: Использование java.io.BufferedReader
Используйте это, если есть огромныйколичество входных данных, и когда срок проблемы является строгим.Это требует дополнительной работы, включая разделение ввода пробелами или использование Integer.parseInt(str);
для извлечения целых чисел из ввода.
Сравнение скорости можно найти здесь https://www.cpe.ku.ac.th/~jim/java-io.html
Инициализация: BufferedReader reader = new BufferedReader(System.in);
Чтение целого числа: int n = Integer.parseInt(reader.readLine());
Подход 3: Чтениенепосредственно из FileDescriptor
с использованием специального считывателя
Этот подход является самым быстрым из возможных в Java.Это требует много работы, включая реализацию читателя, а также отладку в случае возникновения проблем.Используйте этот подход, если срок строгий, и если вам разрешено вносить код в соревнование.Этот метод проверен на скорость намного быстрее, чем второй подход, но обычно он не дает вам преимущества, так как он только в 2 раза быстрее подхода BufferedReader
.
Это одна из реализаций такого подхода, написанного моим другом: https://github.com/jackyliao123/contest-programming/blob/master/Utils/FastScanner.java
Использование читателя действительно зависит от вашей реализации читателя.Рекомендуется сохранить одну копию программы чтения, которая в некоторой степени гарантированно будет работать, потому что последнее, что вам нужно в конкурсе, - это нефункциональная программа чтения и отладка остальной части вашей программы, думая, что там есть некоторые ошибки.
Надеюсь, это поможет и наилучшие пожелания на вашем конкурсе!