Skip to main content

competitive/algorithm/
mod.rs

1//! algorithm
2
3use crate::algebra::{Field, Group, Invertible, Magma, Monoid, Unital};
4use crate::data_structure::{BitSet, UnionFindBase, union_find};
5use crate::graph::UndirectedSparseGraph;
6use crate::math::{Convolve998244353, ConvolveSteps, Matrix};
7use crate::num::{MInt, MIntBase, One, RangeBoundsExt, URational, Unsigned, Zero, montgomery};
8use crate::tools::{RandomSpec, SerdeByteStr, Xorshift};
9use crate::tree::LevelAncestor;
10
11#[cfg_attr(nightly, codesnip::entry("automata_learning"))]
12pub use self::automata_learning::*;
13#[cfg_attr(nightly, codesnip::entry("baby_step_giant_step"))]
14pub use self::baby_step_giant_step::baby_step_giant_step;
15#[cfg_attr(nightly, codesnip::entry("binary_search"))]
16pub use self::binary_search::{Bisect, SliceBisectExt, binary_search, parallel_binary_search};
17#[codesnip::entry("BitDp")]
18pub use self::bitdp::{BitDpExt, Combinations, Subsets};
19#[codesnip::entry("CartesianTree")]
20pub use self::cartesian_tree::CartesianTree;
21#[codesnip::entry("chromatic_number")]
22pub use self::chromatic_number::IndependentSubSet;
23#[codesnip::entry("combinations")]
24pub use self::combinations::SliceCombinationsExt;
25#[codesnip::entry("ConvexHullTrick")]
26pub use self::convex_hull_trick::ConvexHullTrick;
27#[codesnip::entry("Doubling")]
28pub use self::doubling::{Doubling, FunctionalGraphDoubling};
29#[codesnip::entry("esper")]
30pub use self::esper::{EsperEstimator, EsperSolver};
31#[codesnip::entry("HornSatisfiability")]
32pub use self::horn_satisfiability::HornSatisfiability;
33#[codesnip::entry("ImpartialGame")]
34pub use self::impartial_game::{ImpartialGame, ImpartialGameAnalyzer, ImpartialGamer};
35#[codesnip::entry("number_of_increasing_sequences_between")]
36pub use self::number_of_increasing_sequences_between::{
37    number_of_increasing_sequences_between, number_of_increasing_sequences_between_998244353,
38};
39pub use self::other::*;
40#[codesnip::entry("PartisanGame")]
41pub use self::partisan_game::{PartisanGame, PartisanGameAnalyzer, PartisanGamer};
42#[codesnip::entry("QuotientIndex")]
43pub use self::quotient_index::{CeilQuotientIndex, FloorQuotientIndex};
44#[codesnip::entry("RhoPath")]
45pub use self::rho_path::RhoPath;
46#[codesnip::entry("01_on_tree")]
47pub use self::solve_01_on_tree::solve_01_on_tree;
48#[codesnip::entry("sort")]
49pub use self::sort::SliceSortExt;
50#[codesnip::entry("SqrtDecomposition")]
51pub use self::sqrt_decomposition::{
52    RangeUpdateRangeFoldSqrtDecomposition, SqrtDecomposition, SqrtDecompositionBuckets,
53};
54#[codesnip::entry("stern_brocot_tree")]
55pub use self::stern_brocot_tree::{SbtNode, SbtPath, SternBrocotTree, rational_binary_search};
56#[codesnip::entry("ternary_search")]
57pub use self::ternary_search::{golden_ternary_search, piecewise_ternary_search, ternary_search};
58#[codesnip::entry("XorBasis")]
59pub use self::xorbasis::XorBasis;
60#[codesnip::entry("ZeroSumGame")]
61pub use self::zero_sum_game::{ZeroSumGame, ZeroSumGameAnalyzer, ZeroSumGamer};
62
63#[cfg_attr(
64    nightly,
65    codesnip::entry(
66        "automata_learning",
67        include("BitSet", "coding", "Matrix", "random_generator")
68    )
69)]
70mod automata_learning;
71#[cfg_attr(nightly, codesnip::entry("baby_step_giant_step", include("algebra")))]
72mod baby_step_giant_step;
73#[cfg_attr(nightly, codesnip::entry)]
74mod binary_search;
75#[cfg_attr(nightly, codesnip::entry("BitDp", include("zero_one")))]
76mod bitdp;
77#[cfg_attr(nightly, codesnip::entry("CartesianTree"))]
78mod cartesian_tree;
79#[cfg_attr(
80    nightly,
81    codesnip::entry("chromatic_number", include("MIntBase", "binary_search"))
82)]
83mod chromatic_number;
84#[cfg_attr(nightly, codesnip::entry("combinations"))]
85mod combinations;
86#[cfg_attr(nightly, codesnip::entry("ConvexHullTrick"))]
87mod convex_hull_trick;
88#[cfg_attr(
89    nightly,
90    codesnip::entry("Doubling", include("LevelAncestor", "SparseGraph", "algebra"))
91)]
92mod doubling;
93#[cfg_attr(nightly, codesnip::entry("esper", include("Matrix")))]
94mod esper;
95#[cfg_attr(nightly, codesnip::entry("HornSatisfiability"))]
96mod horn_satisfiability;
97#[cfg_attr(nightly, codesnip::entry("ImpartialGame"))]
98mod impartial_game;
99#[cfg_attr(nightly, codesnip::entry)]
100mod mo_algorithm;
101#[cfg_attr(
102    nightly,
103    codesnip::entry(
104        "number_of_increasing_sequences_between",
105        include("NumberTheoreticTransform")
106    )
107)]
108mod number_of_increasing_sequences_between;
109mod other;
110#[cfg_attr(nightly, codesnip::entry("PartisanGame"))]
111mod partisan_game;
112#[cfg_attr(nightly, codesnip::entry("QuotientIndex"))]
113mod quotient_index;
114#[cfg_attr(nightly, codesnip::entry("RhoPath"))]
115mod rho_path;
116#[cfg_attr(nightly, codesnip::entry("01_on_tree", include("UnionFind")))]
117mod solve_01_on_tree;
118#[cfg_attr(nightly, codesnip::entry("sort"))]
119mod sort;
120#[cfg_attr(
121    nightly,
122    codesnip::entry("SqrtDecomposition", include("algebra", "discrete_steps"))
123)]
124mod sqrt_decomposition;
125#[cfg_attr(nightly, codesnip::entry("stern_brocot_tree", include("URational")))]
126mod stern_brocot_tree;
127#[cfg_attr(nightly, codesnip::entry)]
128mod syakutori;
129#[cfg_attr(nightly, codesnip::entry)]
130pub mod ternary_search;
131#[cfg_attr(nightly, codesnip::entry("XorBasis"))]
132mod xorbasis;
133#[cfg_attr(nightly, codesnip::entry("ZeroSumGame"))]
134mod zero_sum_game;