Closed rsk0315 closed 4 years ago
library-rs/
├── crates/
│ ├── algo/
│ │ └── sliding_window/
│ │ └── src/lib.rs
│ ├── ds/
│ │ ├── foldable_queue/
│ │ │ └── src/lib.rs # FoldableQueue
│ │ ├── splay_tree/
│ │ │ └── src/lib.rs # SplayTree
│ │ ├── union_find/
│ │ │ └── src/lib.rs # UnionFind
│ │ └── vec_segtree/
│ │ └── src/lib.rs # VecSegtree
│ ├── graph/
│ │ ├── dijkstra/
│ │ │ └── src/lib.rs
│ │ └── dinitz/
│ │ └── src/lib.rs
│ ├── traits/
│ │ ├── algebra/
│ │ │ └── src/lib.rs # Monoid とか Group とか
│ │ ├── disjoint_set/
│ │ │ └── src/lib.rs # Equivalent とか Representative とか
│ │ ├── num/
│ │ │ └── src/lib.rs # Signed とか Int とか
│ │ └── range_query/
│ │ └── src/lib.rs # Fold とか Act とか
│ │ # Quantile とか Count3way とかどうしよう
│ └── utils/
│ └── itertools/
│ └── src/lib.rs # CartesianProduct とか Permutations とか
└── verify/
├── judges/ # カスタムジャッジとかケースのダウンロードとか
├── solutions/ # 抽象化した解法
└── tests/ # ライブラリの verify
こういうのでいい? bundle のときに(Cargo.toml から読める)依存関係だけでやってあまり無駄なのが入らないようにしたい
最短距離とかフローとかも trait とかに分ける? 何がしたいのとなってくる
random bit generator とか xorshift とかどうしよう bigint は ds ではないけど他のところでもないと思う
あ、modint(名前未定)や fraction もあるから、bigint もそれらと一緒に num/
とかに入れちゃう?
partition_point
とか gcd
みたいな細々としたのをどこに置くか
あ、math
とか?(algebra は math だと思いますが…)
polynomial とか忘れてた isqrt とか maximize_convex とかは? math にも algorithm にも入りそう? algorithm/math になるか parallel_bsearch とかは?
input は? utils?
Additive
とかは struct
なんだからそこにあるのはおかしいか
各ライブラリが Cargo.toml
で依存関係を示すのはいいとして、実際に(特にコンテスト中に)使うときに Cargo.toml
に書くのは、やってられなくない?
query を trait にするのわからないことになりそう
FoldableQueue
の push
と LineContainer
の push
は別物で、Push
を実装した構造体を solver が要求したときに、謎になりそう?
あるいは、それ以外の操作の条件でよしなに?
遅延セグ木に載せるやつ、どう置こう
どうしよう