#UnionFind
とりあえずRustで自作のUnionFindを書いてみた
(英語力がないので関数名が…)
November 9, 2025 at 9:16 AM
Arrays, collections, and data structures (Trie, Tuple, UnionFind, Fenwick, Bloom Filter, and so on) is a must have for any #Java developer
#Java #Coding #Interview

github.com/PacktPublish...
October 21, 2025 at 4:18 AM
Rust版のUnionfind持ってないし久々にC++でやるか...となったけど自分の持ってるUnionfindもミニマム実装なので全然Rustに翻訳しても良かったな
October 11, 2025 at 11:25 AM
先のABC、ほぼUnionFind使うだけの問題がEに置かれててもうわけわからんな AI対策したすぎて運営側もわけわからんなってんねやろな
August 25, 2025 at 9:36 AM
RepresentedUnionFindじゃなくてMergingUnionFindだった
なんか謎のUnionFind系データ構造が転がってるけど、あんまり使わないから忘れかけてたし、名前もごっちゃになってる
自分でつけた名前なのに
August 24, 2025 at 1:56 PM
E問題はUnionFindで連結判定しながら、連結成分ごとに黒色頂点の個数の総和をもっておく
自作ライブラリ整備してたらたまたまみつけた謎のデータ構造RepresentedUnionFind(結合UnionFind)で一撃だったけどナニコレ

G問題は式をコネコネして因数分解して約数列挙
Y=(与式)としてなんやかんやすると(2Y+2n+1)(2Y-2n-1)=4X-1という式が得られる
右辺は定数なので、4X-1の約数を列挙していって左辺の因数にそれぞれ当てはめて連立方程式を2つ作り、それぞれ解いてnの値を求める
実は約数列挙は片方が正の約数になることを仮定してよかったりする
August 24, 2025 at 1:52 PM
ABC417
A substr
B 0で削除済みを表し愚直
C A_i-iの個数をmapで管理しながら追加していく
D 後ろからDPできるんだけど、大きいときの着地を二分探索する必要もありやりたくない
E UnionFindでギリ間に合うと思ったらNを1個余分に付けてTLE
F 難しいと思ってDに戻ったけど、遅延セグ木やるだけで一番簡単だった
G 愚直に辿っては長すぎるけどX_iもばらばらで不可能に見える
August 2, 2025 at 2:48 PM
A’s boss doesn’t know who the CEO is… so he asks *his* boss… then *his* boss…
That’s basically Union-Find.
This autism-friendly coding tutorial makes it click:
🎥 youtu.be/IJuupDWkzqE

#UnionFind #AutisticDev #GraphAlgorithms #CodingForBeginners #LearnToCode #NeurodivergentTech
Union Find Explained Simply (Autism-Friendly Coding Tutorial)
YouTube video by AutistiCoder
youtu.be
July 8, 2025 at 3:34 PM
F
Dと並んで最難候補。
ゴールのマスは0で確定として、それ以外のマスを順次確定させていくことを考える。
あるマスAに注目し、Aに隣り合う4つのマスのうち2つのマスの答えが確定していたら、そのうちの答えの大きい方+1がAの答えになる。
答えが小さいマスから順に確定させていく感じになるよう実装する必要があるっぽい?
G
右上と左下が障害物でつながっているかどうかを UnionFind で判定
July 5, 2025 at 1:43 PM
E問題は木DP
木を根付き木とみなすと、葉にある陽電子や電子は上にしか行けなくて、陽電子と電子は最小共通祖先で対消滅したいことがわかる
これをDFSっぽい木DPで表現する

F問題は解けなかった
クエリ2をセグメントツリーの配列、クエリ3をUnionFindで高速に解決できそうだったけど、すでに連結している2頂点をクエリ2でご検知するケースに対処できず終了
もう少し気づくのが早ければ……
June 7, 2025 at 1:55 PM
ABC408

A Tのリストの先頭に0を入れて、隣り合うTの要素の差がSを超えてないかをチェック
B ABC史上最易候補では? sort して unique
C imos法で最も砲台数少ない場所を探す
D 左側区間+中央区間の長さが 1~N それぞれに対して、コストが最も安いものを短い順に求めていく。右側区間は累積和とかで簡単にコスト求められる
E 上位bitから順に、UnionFind使ってそのbitを含む必要があるかどうかを確定させてく
F セグ木で適当に
G Stern-Brocot Tree を潜っていって最初に区間に含まれる有理数が答え。愚直に潜ると TLE するので二分探索する
May 31, 2025 at 1:42 PM
最初に UnionFind してまとめたけどどうせ展開するんだからまとめなくていいじゃんあほや。。。。
April 5, 2025 at 1:48 PM
addresses. Applying these heuristics and employing the UnionFind algorithm, we efficiently cluster all the addresses that have appeared on the Cardano blockchain from September 2017 to January 2023, where each cluster represents a distinct entity. The [4/6 of https://arxiv.org/abs/2503.09327v1]
March 13, 2025 at 5:56 AM
F 根付き木にして、`dp[v]` に「`v` を根とする部分木に含まれる部分グラフの中で、`v` を含みかつvの次数が 0 or 3 でかつ `v` 以外の頂点の次数が 1 or 4 のものの頂点数の最大値」を考える。この dp を葉から根に向かって順に構築していく。構築の過程で各部分木におけるアルカンの最大サイズが得られる。
G `1000000-階数` を時刻とする永続UnionFindで殴れる
February 22, 2025 at 1:41 PM
ABC392おわりっ!ABCEをノーペナ4完!

D問題は苦手な確率問題で、愚直実装ではTLEが剥がれず断念
これ5500人に解かれてるってマジ?

E問題は比較的得意なグラフ問題だったが、自作ライブラリのUnionFindが機能不足でそのままでは使い物にならなかったので、急遽機能を付け足して滑り込みAC

E問題も2000人以上に解かれてるから、総合的に見ればRating冷えてそうで結果を見るのが怖い
Japan Registry Services (JPRS) Programming Contest 2025#1 (AtCoder Beginner Contest 392) - AtCoder
AtCoder is a programming contest site for anyone from beginners to experts. We hold weekly programming contests online.
atcoder.jp
February 8, 2025 at 1:46 PM
ABC392

A `next_permutation` 使ったけど、最大の値を右辺に持っていけば使うまでもないか
B `exists` 配列作って全探索
C むずい。落ち着いて日本語を読む。
D 各配列 `A` はあらかじめソートしておく。`O(N**2)` のループを回す。ループ内ではマージテク的な発想で小さい方の配列を全探索、大きい方に同じ値が何個あるかを調べて確率を求める。
E UnionFind でダブった辺を接続に使う
F `P` を逆順に舐めていって PBDS で殴った
G NTT で畳み込み。係数があんまり大きくならないし、浮動小数点数で FFT でも誤差生じないので可。
February 8, 2025 at 1:40 PM
UnionFind
December 14, 2024 at 4:17 AM
RustでUnionFindを実装するなら、ac-library-rsクレートのDsu構造体が参考になるかもしれません。ドキュメントはこちらです:
docs.rs/ac-library-r...
Dsu in ac_library::dsu - Rust
A Disjoint set union (DSU) with union by size and path compression.
docs.rs
November 19, 2024 at 2:10 AM
Rust で UnionFind 作るなら struct と impl を組み合わせると良さそうな気がしてきた(impl 書いたことないので勘違いしてるかもしれないけど)
November 18, 2024 at 10:30 PM
#ABC380 メモ
ABC 3完 13:18
秋のstring祭り、周期性が見つからない

A:stringをソート。122333と一致するか?

B:最初の|を捨てる。-の数を数え|が来たら出力

C:1始まりなら最初に0が0個あるとする。すると配列が0の個数・1の個数の繰り返しとみなせるので変えたいところをSWAP

D:大文字小文字を入れ替えたものをTとする。結局欲しい文字がSなのかTなのかさえ分かればいい。だが周期を見抜けず。

 雑に言えば2^nより上に来てたら反転というのを繰り返せばよかった。

E:左右、色情報を載せたUnionFindをコツコツ

次回のRateどうなるか?
November 17, 2024 at 5:43 AM
久しぶりに競プロのライブラリを更新(UnionFind を追加)
github.com/NAVYSHUNTA/a...
github.com
November 5, 2024 at 2:02 AM
ABC372-E、UnionFind + マージテクで解いたけど、kが小さいからマージテクなんか使わなくてもできるんだな
ちなみに k が大きい場合でも、C++ だったら pbds の tree 使えば解けそう
September 21, 2024 at 9:50 PM