C#

1/9ページ
C#

[C#] セグメント木を実装してみる

セグメント木とは セグメント木は名前の通り区間を扱うのが得意なデータ構造です。中身は完全二分木であり、区間の持つデータを管理します。 要素8件からなる配列のデータについて、セグメント木は具体的には以下のような形になります。 各ノードの中の数字は配列の区間データを格納します。 上記のような二分木のデータ構造を使うと、区間に関するクエリ(データの更新、取得)を計算量 O(log N)行えます。 なにが […]

C#

[C#] 10進数の桁数とx桁目の数を求める

10進数の桁数を求める C# で10進数の桁数を求める方法をまとめます。一番簡単なのは文字列に変換して Length を参照することですが、ここではそれ以外の方法をまとめます。 0になるまで10で割り続ける方法 0になるまで繰り返し10で割り続けることで求められます。余りは切り捨てます。 例えば12345の桁数を求めるときの計算例です。 12345 / 10 = 1234 1234 / 10 = […]

C#

[C#] ダイクストラ法で最短経路を見つけるための実装方法

ダイクストラ法とは ダイクストラ法 – Wikipedia ダイクストラ法とは、Wikipedia によると次のように説明されます。 ダイクストラ法(だいくすとらほう、英: Dijkstra’s algorithm)はグラフ理論における辺の重みが非負数の場合の単一始点最短経路問題を解くための最良優先探索によるアルゴリズムである。 ある点からの最短経路を求めるときに使用される […]

C#

[C#] ワーシャルフロイドのアルゴリズムに入門する。

ワーシャルフロイドのアルゴリズムについてまとめ、C#で実装してみる記事です。 ワーシャル–フロイド法 とは ワーシャル–フロイド法 – Wikipedia ワーシャル–フロイド法(英: Warshall–Floyd Algorithm)は、重み付き有向グラフの全ペアの最短経路問題を多項式時間で解くアルゴリズムである。 ワーシャルフロイドは最短経路問題を解くときに使われるアルゴリズムの1 […]

C#

[C#] 三井住友信託銀行プログラミングコンテスト2019 の記録

[C#] 三井住友信託銀行プログラミングコンテスト2019 の記録 三井住友信託銀行プログラミングコンテスト2019 – AtCoder 三井住友信託銀行プログラミングコンテスト2019 に参加したのでその記録です。 AtCoder Beginner Contest (ABC) 相当の難易度のコンテストです。 結果は ABCD の4問解けて、Eは解けそうで解けませんでした。以下コンテス […]

C#

[C#] 順列を求める next_permutation() 代わりを実装する方法

C# で順列を求めたい next_permutation – cpprefjp C++日本語リファレンス C++ には next_permutation という順列を生成する関数が用意されています。これに似た関数を C# でもほしいので実装してみます。 next_permutation() まずは next_permutation() がどんな関数か見てみます。 例えば [1, 2, […]

[C#] Linqの演算で和集合, 差集合, 積集合 を求める方法

C# で集合(コレクション)に対して演算を行う C# では Linq を使って、集合に対する演算を行えます。よくベン図で表現されるようなやつを C# で表現できます。 例えば2つの集合を足し合わせた集合を作ったり(和集合)、2つの集合両方に含まれる要素からなる集合を作ったり(積集合)ができます。 ここでは和集合、積集合、差集合を求めてみます。 和集合(Union) いずれかに含まれる 集合 x と […]

C#

[C#] 文字列を逆順に反転して並べ替える方法

文字列を逆順に反転して並べ替える方法 C#, VB.NET で文字列を逆順に反転させる方法をまとめます。 まず、Linq で Reverse() というコレクションを逆順にするメソッドがあります。これを文字列に対して使うことで逆順の IEnumerable<char> が得られます。 逆順のデータが得られたらあとはそれを文字列にするだけです。 得られたデータを配列にしてから new s […]

C#

[C#] ランレングス圧縮(連長圧縮)を実装する方法

C# でランレングス圧縮 連長圧縮 – Wikipedia C# で ランレングス圧縮 を実装してみます。ランレングス圧縮についてはWkipediaを引用すると以下のようなものです。 連長圧縮は、データ圧縮アルゴリズムの一つで、可逆圧縮に分類される。ランレングス圧縮、RLE (Run Length Encoding) とも呼ばれる。 連長圧縮では、ある連続したデータを、そのデータ一つ分 […]

1 9