author: https://atcoder.jp/users/nsubaru
このリポジトリーは、Java で書かれた競技プログラミング向けの各種ライブラリを掲載しています。
バグを含む可能性が高く、完全な動作は保証しません。あくまでライブラリ作成のヒントとしてご利用ください。
- 用途
- 標準入力(
InputStream)を高速に処理するクラス。
- 標準入力(
- 特徴
- 内部バッファを使用して効率的に入力を読み込む。
- 競技プログラミングでよく使用される入力形式(配列、行列、コレクション等)の読み込みをサポート。
AutoCloseableを実装しているため、try-with-resourcesの利用が推奨される。- Java 17環境向けとJava 24環境向け(最新機能による最適化版)がある。
- 用途
- 標準出力(
OutputStream)を高速に処理するクラス。
- 標準出力(
- 特徴
- 内部バッファに出力内容を蓄積し、効率的に書き出す。
- 配列や行列の出力、メソッドチェーンによる記述をサポート。
AutoCloseableを実装しているため、try-with-resourcesの利用が推奨される。- Java 17環境向けとJava 24環境向け(最新機能による最適化版)がある。
-
用途
- 通常の二分探索や上限/下限探索を実行するための 汎用的な二分探索クラス
-
特徴
- ユーザーが条件を指定するLambda関数またはメソッドを使用して、柔軟な探索が可能
- サポートする探索方法
normalSearch(n): 条件を満たす任意の要素のインデックスを取得lowerBoundSearch(n): 条件を満たす最も左側のインデックスを取得upperBoundSearch(n): 条件を満たす最も右側のインデックスを取得
- 見つからなかった場合の戻り値
- 挿入位置を計算し、
-(挿入位置 + 1)の形式で返す
- 挿入位置を計算し、
- 整数 (
int) および長整数 (long) をサポート
-
用途
- ソート済み配列に対する効率的な二分探索を提供するクラス
-
特徴
- サポートする探索方法(BinarySearch と同じ)
normalSearch(target): 配列内で一致する任意のインデックスを取得lowerBoundSearch(target): 配列内で一致する範囲の最も左側のインデックスを取得upperBoundSearch(target): 配列内で一致する範囲の最も右側のインデックスを取得
- 対応する配列型
- 整数 (
int[]) - 長整数 (
long[]) - 倍精度浮動小数点数 (
double[]) - 比較可能な型 (
Comparable<T>)
- 整数 (
- ソート済み配列を前提にしており、探索範囲の指定も可能
- 見つからなかった場合は、
-(挿入位置 + 1)の形式で挿入位置を返す
- サポートする探索方法(BinarySearch と同じ)