できること一覧
したいこと | リンク |
---|---|
小数点以下を切り上げたい | 小数点以下切り上げ(天井関数) |
階乗を求めたい | 階乗 |
GCD(最大公約数)を求めたい | 最大公約数 拡張ユークリッドの互除法 |
LCM(最小公倍数)を求めたい | 最小公倍数 |
(正の)約数をすべて求めたい | 約数列挙 |
ある数が素数かどうか判定したい | 素数判定 |
素数を列挙したい | 素数列挙 素因数分解(線形篩) |
素因数分解をしたい | 素因数分解 素因数分解(線形篩) |
累乗を求めたい | 累乗(繰り返し二乗法) |
MOD逆元を求めたい | 逆元(素数MOD) |
素数modでnCr (二項係数)を求めたい | 素数mod二項係数 |
0^M , 1^M , … , N^M を高速に求めたい | 素因数分解(線形篩) |
ax+by=gcd(a,b)を満たす(x,y)を一つ求めたい | 拡張ユークリッドの互除法 |
ある整数nについて、1~nのうちnと互いに素なものの数を求めたい | オイラーのφ関数 |
浮動小数点数で数列の畳み込みをしたい | 高速フーリエ変換(FFT) |
整数環で数列の畳み込みをしたい | 数論変換(NTT) |
合成数を含む任意のmodでnCr (二項係数)を求めたい | 任意mod二項係数 |
二次元上の線分が共通部分を持つか判定したい | 線分当たり判定 |
二次元上の点を偏角を基準にソートしたい | 偏角ソート |
二次元の点集合の凸包を求めたい | 凸包 |
二次元配列を(反)時計回りに回転させたい | 二次元配列の回転 |
文字列をランレングス圧縮したい | ランレングス圧縮 |
頂点から辺をk回辿ったときの頂点を求めたい | 反復写像 |
数列の連続するK個の要素の最小値を求めたい | スライド最小値 |
数列を大小関係を保ってコンパクトにしたい | 座標圧縮 |
最長増加部分列の長さを求めたい | 最長増加部分列 |
隣接する区間への解が高速にわかるときいくつかのクエリに対しての答えを求めたい | Moのアルゴリズム |
文字列の連続部分列どうしの一致判定を高速にしたい | ローリングハッシュ |
(負閉路がないとき)最短経路を求めたい | ダイクストラ法 |
(負閉路があるとき)最短経路を求めたい | ベルマンフォード法 |
最小全域木を一つ求めたい | クラスカル法 |
グラフが二部グラフか判定したい | 二部グラフ判定 |
木の直径を求めたい | 木の直径 |
根付き木の親頂点を求めたい 根付き木の最小共通祖先を求めたい |
最小共通祖先 |
フローの最大値を求めたい | ディニッツ法 |
数列の区間(和/max/minなど)を高速に求めたい | セグメント木 |
数列の区間演算の結果を高速に求めたい | 遅延セグ木 |
数列の区間和を高速に求めたい 数列の転倒数を求めたい |
フェニック木 |
ある区間の X 以下の要素の個数を求めたい | マージソート木 |
素集合を高速に求めたい | UnionFind |
辺に重みがついた素集合を高速に求めたい | ポテンシャル付きUnionFind |