はてなブックマークアプリ

サクサク読めて、
アプリ限定の機能も多数!

アプリで開く

はてなブックマーク

  • はてなブックマークって?
  • アプリ・拡張の紹介
  • ユーザー登録
  • ログイン
  • Hatena

はてなブックマーク

トップへ戻る

  • 総合
    • 人気
    • 新着
    • IT
    • 最新ガジェット
    • 自然科学
    • 経済・金融
    • おもしろ
    • マンガ
    • ゲーム
    • はてなブログ(総合)
  • 一般
    • 人気
    • 新着
    • 社会ニュース
    • 地域
    • 国際
    • 天気
    • グルメ
    • 映画・音楽
    • スポーツ
    • はてな匿名ダイアリー
    • はてなブログ(一般)
  • 世の中
    • 人気
    • 新着
    • 新型コロナウイルス
    • 働き方
    • 生き方
    • 地域
    • 医療・ヘルス
    • 教育
    • はてな匿名ダイアリー
    • はてなブログ(世の中)
  • 政治と経済
    • 人気
    • 新着
    • 政治
    • 経済・金融
    • 企業
    • 仕事・就職
    • マーケット
    • 国際
    • はてなブログ(政治と経済)
  • 暮らし
    • 人気
    • 新着
    • カルチャー・ライフスタイル
    • ファッション
    • 運動・エクササイズ
    • 結婚・子育て
    • 住まい
    • グルメ
    • 相続
    • はてなブログ(暮らし)
    • 掃除・整理整頓
    • 雑貨
    • 買ってよかったもの
    • 旅行
    • アウトドア
    • 趣味
  • 学び
    • 人気
    • 新着
    • 人文科学
    • 社会科学
    • 自然科学
    • 語学
    • ビジネス・経営学
    • デザイン
    • 法律
    • 本・書評
    • 将棋・囲碁
    • はてなブログ(学び)
  • テクノロジー
    • 人気
    • 新着
    • IT
    • セキュリティ技術
    • はてなブログ(テクノロジー)
    • AI・機械学習
    • プログラミング
    • エンジニア
  • おもしろ
    • 人気
    • 新着
    • まとめ
    • ネタ
    • おもしろ
    • これはすごい
    • かわいい
    • 雑学
    • 癒やし
    • はてなブログ(おもしろ)
  • エンタメ
    • 人気
    • 新着
    • スポーツ
    • 映画
    • 音楽
    • アイドル
    • 芸能
    • お笑い
    • サッカー
    • 話題の動画
    • はてなブログ(エンタメ)
  • アニメとゲーム
    • 人気
    • 新着
    • マンガ
    • Webマンガ
    • ゲーム
    • 任天堂
    • PlayStation
    • アニメ
    • バーチャルYouTuber
    • オタクカルチャー
    • はてなブログ(アニメとゲーム)
    • はてなブログ(ゲーム)
  • おすすめ

    新内閣発足

『けんちょんの競プロ精進記録』

  • 人気
  • 新着
  • すべて
  • 「数式の多い解説」の読み方について - けんちょんの競プロ精進記録

    3 users

    drken1215.hatenablog.com

    競プロの上達のためには、解けなかった問題の復習がとても大切になって来ます。 しかし、そんなことは分かっていても「解説を読んで分からないことが多々ある」ことが大きな壁になっていると感じる方も多くいると思います。とくに、数式が多いと難しく感じられてしまう傾向にあるようです。 個人的には、最近の ABC の公式解説が分かりにくいとは思わないので、解説に頑張って読み解いていくことは、どうしても求められると思います。数式ばかりの解説は最初は辛いかもしれませんが、いくつか読み解くコツがあります! この記事では、僕の思うコツをいくつか挙げたいと思います。今後の解説 AC の一助となれたら嬉しいです! 題材として、次の問題を扱います。 atcoder.jp コツ 1:分からない言葉は調べる まず、解説を読んで分からない言葉があったら、その言葉がわかるようにしましょう! たとえば、上に挙げた問題の解説は次の

    • 暮らし
    • 2023/07/30 13:04
    • あとで読む
    • グラフのサイクル検出 (閉路検出) by DFS - けんちょんの競プロ精進記録

      3 users

      drken1215.hatenablog.com

      私たちは、グラフアルゴリズムとして DFS や BFS を学ぶと 頂点 s から頂点 t へ辿り着けるかどうかを判定する 連結成分の個数を求める 二部グラフ判定する トポロジカルソートする などといった例題を次々とこなしていき、グラフ探索スキルを高めていく道を歩んでいくことになります。そんな長い道のりにおいて、脱初級者の登竜門とも言うべき難所として、本記事ではサイクル検出を解説します! AtCoder でも、ABC-E や水色 diff などでよく出題されるテーマです。 目次 最終的なサイクル検出コードを「4. まとめのコード」で示すので、時間のない方はそこに飛んでもらえたらと思います。Yosupo Judge Library Checker の「Cycle Detection (Directed)」と「Cycle Detection (Undirected)」を通します。 また、ABC

      • テクノロジー
      • 2023/05/21 00:25
      • ここで働きたい! フリーランス作家がモノグサ株式会社に転職するまでにやったこと - けんちょんの競プロ精進記録

        3 users

        drken1215.hatenablog.com

        こんにちは & はじめまして! つい最近まで、IT 系の作家業で生計を立てていた大槻兼資(通称、けんちょん)です。 今この記事を読んでいるみなさんの中には、「転職」という言葉が頭をチラついたことがある人も多いでしょう。リクナビの調査によると、全国の 20 代~50 代の働く男女のうち 60% 以上が転職活動を経験したことがあるそうです。 転職に対する考え方は人それぞれですが、人生の可能性を拡げられる選択肢の 1 つであることは間違いないでしょう。 自分を変えたい もっとチャレンジしたい 経験・視野の幅を広げたい 年収を上げたい 人間関係の悩みを解消したい など、さまざまな理由で多くの人が転職活動に励んでいます。僕もその 1 人でした。2015 年に大手 IT 企業に AI 系のエンジニアとして就職し、2020 年に社員としては退職し、その後 2 年間はフリーランス作家として活動し、2022

        • 世の中
        • 2023/03/22 00:17
        • 競プロ典型 90 問 006 - Smallest Subsequence(1Q, ★5) - けんちょんの競プロ精進記録

          3 users

          drken1215.hatenablog.com

          辞書順最小なものを求めるとき、しばしば貪欲法が有効ですね! 問題へのリンク editorial 問題概要 英小文字のみからなる長さ の文字列 が与えられます。 の長さ の部分文字列であって、辞書順最小のものを求めてください。 制約 辞書順最小 → 貪欲法! 「辞書順最小のものを求めよ」と言われたら、とにかく貪欲法!!! まずは求めたい文字列の先頭の文字について、次のように考えます。 もし先頭の文字が a であって、長さ の部分文字列が存在するならば、先頭の文字は a であると考えてよい 文字列 にそもそも文字 a がないとダメ 文字 a があったとしても、その後ろの文字数が 文字未満の場合はダメ そのような部分文字列が存在しないならば、先頭の文字を b にできるかを考える それもダメならば、先頭の文字を c にできるかを考える それもダメならば、先頭の文字を d にできるかを考える ...

          • テクノロジー
          • 2022/09/05 22:47
          • AtCodeer 本を書きました! - けんちょんの競プロ精進記録

            3 users

            drken1215.hatenablog.com

            こんばんは!!! けんちょんです! 新しく本を出させていただくことになりましたので、報告いたします。 この本は次の Qiita の記事を単行本化したものです。 qiita.com amazon リンク 今度はどんなコンセプトで、どんな内容で、どんなターゲット層を想定した本なのかについて、簡単に紹介します。 1. 本書のコンセプト 今回の本は、 AtCoder を何も知らない方が入門できる! AtCoder を布教したい方が「とりあえずこれ読めばいいよ」と言える! C++ と Python の両言語で入門できる! ことを目指した AtCoder の入門本です。おそらく、史上最も易しい競プロ本です。 Python で競プロしている方が C++ に乗り換えるキッカケになったり、C++ で競プロしている方が Python に乗り換えるキッカケになったりすることも狙っています。 章 位置付け 内容

            • テクノロジー
            • 2022/06/06 10:33
            • book
            • パズルとアルゴリズムのコラボ本を書きました! - けんちょんの競プロ精進記録

              59 users

              drken1215.hatenablog.com

              1. はじめに お久しぶりです! けんちょん本のけんちょんです。 最近はアルゴリズムがとても盛り上がっていますね。今回新たなアルゴリズム本を上梓させていただくことになりました! 発売予定日は 2022/4/20 です。一部大型書店では、もうすでに並んでいるはずです。今回の記事では、この本を通してお届けしたいメッセージや、想定読者、内容などについて簡単に紹介させていただきます。 amazon ページへのリンク 2. 本書の内容と対象読者 2-1. 本書の内容 百聞は一見に如かずということで、まずは目次構成をお見せします! 第 1 章:アルゴリズム入門 第 1 話:「テンパズル」 〜 力まかせ探索 第 2 話:「小町算」 〜 再帰関数 第 3 話:「虫食算」 〜 枝刈り 第 II 章:グラフアルゴリズム 第 4 話:「数独」 〜 深さ優先探索 1 第 5 話:「覆面算」 〜 深さ優先探索 2

              • テクノロジー
              • 2022/04/14 01:42
              • アルゴリズム
              • algorithm
              • 本
              • あとで読む
              • book
              • HotEntry
              • 書籍
              • programming
              • 座標圧縮 (座圧) - けんちょんの競プロ精進記録

                5 users

                drken1215.hatenablog.com

                競技プログラミングで時々問われる「座標圧縮」について簡単に解説します。 1. 座標圧縮とは 数列 が与えられたときに、それぞれの要素が「全体の中で何番目に小さいか」を求めていく作業を、競プロ界では座標圧縮 (座圧) とよびます。 たとえば A = (8, 100, 33, 12, 6, 1211) に対しては、座標圧縮した結果は次のようになります。 1, 4, 3, 2, 0, 5 最も小さい数に「0」を割り当てて、小さい順に 1, 2, ... を割り当てて行っています。 同じ値があるとき 座標圧縮では、同じ値があるときは、タイは「一つの順位を占めるもの」として考えます。たとえば A = (6, 9, 9, 2, 100) に対しては、座標圧縮した結果は次のようになります。 1, 2, 2, 0, 3 コンテストの順位を決めるときのように (間違い) 1, 2, 2, 0, 4 というよ

                • 暮らし
                • 2021/10/16 12:44
                • アルゴリズム本、書きました! - けんちょんの競プロ精進記録

                  9 users

                  drken1215.hatenablog.com

                  1. はじめに お久しぶりです! けんちょんです。 これまで 3 年間にわたって、Qiita に、アルゴリズムに関するさまざまな話題を投稿し続けてきました: アルゴリズムとは何か!? 計算量オーダーの求め方を総整理! 動的計画法超入門! 再帰関数を学ぶと、どんな世界が広がるか スタックとキューを極める! ソートを極める! DFS (深さ優先探索) 超入門! 実世界で超頻出!二部マッチングの解法を総整理!‬ このたび、それらの記事を有機的にまとめ上げ、さらに多数のトピックを追加する形で、アルゴリズム入門書を上梓させていただくことになりました! 大槻兼資著、秋葉拓哉監修:問題解決力を鍛える!アルゴリズムとデータ構造 - amazon 発売予定日は 2020/9/30 となっています。講談社サイエンティフィク様からの発売となります。今回の記事では、この本を通してお届けしたいメッセージや、想定読者

                  • テクノロジー
                  • 2020/08/11 17:08
                  • book
                  • あとで読む
                  • よくやる再帰関数の書き方 〜 n 重 for 文を機械的に 〜 - けんちょんの競プロ精進記録

                    58 users

                    drken1215.hatenablog.com

                    時は 2020 年 5 月 3 日。 ここ最近、AtCoder では、「再帰関数を用いた DFS な全探索」というタイプの問題が激増しています!!! AtCoder ABC 165 C - Many Requirements (昨日のやつ) AtCoder ABC 114 C - 755 AtCoder ABC 119 C - Synthetic Kadomatsu AtCoder ABC 161 D - Lunlun Number パナソニックプログラミングコンテスト D - String Equivalence これらの多くは緑後半から水色前半の difficulty を叩き出す、とても恐れられている問題たちです。しかし実のところ、「ちょっと複雑だけど、単純に全探索するだけ」という側面もあります。 これらの出題が最近急増しているのは、おそらくは AtCoder 社側に 最近の AtCo

                    • テクノロジー
                    • 2020/05/04 19:28
                    • 再帰
                    • 競技プログラミング
                    • algorithm
                    • Python
                    • あとで読む
                    • AtCoder ABC 163 D - Sum of Large Numbers (緑色, 400 点) - けんちょんの競プロ精進記録

                      3 users

                      drken1215.hatenablog.com

                      「作れる数が連続する整数になる」というの、実は結構よくある!! 問題へのリンク 問題概要 個の整数 がある。 これらから 個以上の整数を選んで合計して得られる整数としてありうるものの個数を 1000000007 で割ったあまりを求めよ。 制約 考えたこと まず、 「この ってなんだよ!!!!!」 となるかもしれない。でも、よくよく考えると、これはそんなに恐れる必要はなくて...。 だとでかすぎるので、試しに として、 の代わりに くらいにしてみよう。そうすると 個の整数は 10000, 10001, 10002, 10003, 10004, 10005 になる。これらの整数から、いくつか選んで足してみる。このとき、 1 個選んで足したときは、どのように選んでも、最上位の値が 1 2 個選んで足したときは、どのように選んでも、最上位の値が 2 3 個選んで足したときは、どのように選んでも、最

                      • テクノロジー
                      • 2020/04/20 07:39
                      • VSCode (Visual Studio Code) のターミナルを右側に表示させる - けんちょんの競プロ精進記録

                        3 users

                        drken1215.hatenablog.com

                        VSCode は神!!!!! けんちょんは、emacs から VSCode への移行を決意しました。そのキッカケとなったのは、 どーーーーーん!!!!!!!!! ターミナルを右側に表示させることができるのだ!!! 実は以前にも、emacs から VSCode への移行を試みたことがあった。だがそのときは挫折した。その理由は「ターミナルを右側に表示させる方法がわからなかったから」だ。 でも、今回できたので、VSCode への移行を決めたのだ。その方法は実は簡単だった。 terminal と書かれているところを右クリックすると、「Move Panel Right」というのが出てくる!!!!!!!!!!! (ヴァネロピさんが教えてくれました。ありがとうございます。) これでこれからは、フォルダ機能と、コーディング画面と、ターミナルとを一元管理した環境で競プロができる!!!!!

                        • テクノロジー
                        • 2020/04/03 02:44
                        • AtCoder ABC 153 E - Crested Ibis vs Monster (緑色, 500 点) - けんちょんの競プロ精進記録

                          3 users

                          drken1215.hatenablog.com

                          個数制限なしナップサック!!!!!!! 問題へのリンク 問題概要 種類の魔法を駆使して、HP が のモンスターを倒したい。 番目の魔法は、魔力を だけ消費して、モンスターの HP を だけ減らすことができる モンスターの HP を 0 以下にするのに消費する魔力の最小値を求めよ。 制約 解法 (1) これは個数制限なしナップサック問題そのもの!!!!! 普通のナップサックは、容量 以内で、価値を最大化する問題だけど、今回は魔法によってモンスターに与えるダメージが 以上になる範囲で、魔力を最小化する問題。 実質はほとんど一緒になります。個数制限なしナップサックは、以前これらの記事に書いてみました!!! qiita.com 今回の DP をざっくり書くと、 dp[ i ][ h ] := 最初の i 種類の魔法でモンスターに h のダメージを与える場合の、消費魔力の最小値 とする。このとき d

                          • テクノロジー
                          • 2020/01/26 23:49
                          • あとで読む
                          • bit 全探索を「再帰関数」で書く 2 つの流儀 - けんちょんの競プロ精進記録

                            7 users

                            drken1215.hatenablog.com

                            0. はじめに bit 全探索は、世の中で「AtCoder 温室育ちだと弱い」と言われるタイプの問題の代表かもしれません。何も考えずに思考停止して全探索すればよいのですが、ちょっと実装が重たい傾向にあって、書き切るのが大変という感じです。difficulty を見ても ABC-C の中でも高めの傾向です。 ABC 147 C - HonestOrUnkind2 (972) ABC 128 C - Switches (728) ABC 119 C - Synthetic Kadomatsu (1306) ABC 104 C - All Green (1396) bit 全探索の考え方や実装は、以下の記事にまとめてみました。 drken1215.hatenablog.com しかし、全探索アルゴリズムにおいて、より汎用的な方法として再帰関数を用いるというのがあります。むしろ、再帰関数を自在に書

                            • テクノロジー
                            • 2020/01/05 23:36
                            • bit 全探索 - けんちょんの競プロ精進記録

                              13 users

                              drken1215.hatenablog.com

                              0. はじめに ビット演算については、以下の記事で特集しました。 qiita.com しかし、この中で、bit 全探索に関する説明がだいぶ簡潔すぎたので、ちゃんと書きたいなと思って、この記事書きます!!!ただし、ビット演算に関する知識は前提としているので、そこに不安のある方は上の記事を読んでもらえたらと思います。 具体的には、以下の表を見てピンとこなかった場合には、先に上記の記事を読んでもらえたらと思います。 なお、この記事は、 Competitive Programming (1) Advent Calendar 2019 の 6 日目の記事として書きました。 1. bit 全探索で何ができるか bit 全探索とは、 個のものから、いくつか選ぶ方法を全列挙して調べ上げる手法 です!!! 個のものからいくつか選ぶ方法は、 通りの選択肢があります。たとえば のとき、3 個のアイテム {2,

                              • テクノロジー
                              • 2019/12/14 17:21
                              • あとで読む
                              • AtCoder ABC 141 E - Who Says a Pun? (1D, 水色, 500 点) - けんちょんの競プロ精進記録

                                4 users

                                drken1215.hatenablog.com

                                文字列検索に関するライブラリが充実していれば怖いものがない。でも文字列のことを知らなくても実は DP でも解ける!!! Suffix Array Z-algorithm (editorial 解) ロリハ + 二分探索 「ロリハ + 二分探索」の高速化 (editorial のラスト 3 行で言及された別解) DP の五通りの方法でやってみる 問題へのリンク 問題概要 長さ の文字列 があたえれる。 の連続する部分文字列として、重ならずに 2 回以上現れるもののうち、最長のものの長さを答えてください。 制約 解法 1:Suffix Array の LCP 配列 まず、蟻本の P.340 に書いてある方法。 ここで文字列 S の i 文字目から先を取り出した部分文字列を S[ i : ] と書くことにする。 さて、Suffix Array で何ができるのかだけ書くと で Suffix Arr

                                • テクノロジー
                                • 2019/09/16 08:14
                                • けんちょんの競プロ精進記録

                                  6 users

                                  drken1215.hatenablog.com

                                  面白かった! 問題へのリンク editorials 問題概要 3 つの文字 B, Y, K からなる長さ の文字列 が与えられる。 この文字列をいくつかの区間に分割する。各区間について、 ランレングス圧縮すると、B -> Y -> K の順になるもの:区間の長さだけスコアを獲得 ランレングス圧縮すると、K -> Y -> B の順になるもの:区間の長さだけスコアを獲得 それ以外:スコア獲得なし 区間分割の仕方を最適化したときに、得られるスコアの総和の最大値を求めよ。 制約 考えたこと 仮に の計算量を費やしてもよいならば、いつもの「区間の分割の仕方を走査していく DP」で解ける。それがうまくいかない場合には、耳DPで解けることがよくある。今回は、次のような DP で上手くいった。 dp[i][0]: の先頭から 文字目までを考えて、その終端で一旦区間を区切る場合の、スコアの最大値 dp[i

                                  • テクノロジー
                                  • 2019/07/17 16:49
                                  • Gauss-Jordan の掃き出し法と、連立一次方程式の解き方 - けんちょんの競プロ精進記録

                                    3 users

                                    drken1215.hatenablog.com

                                    0. はじめに プログラミングコンテストにおいて、連立一次方程式を解くことに帰着できる問題は数多く出題されています。 連立一次方程式は Gauss Jordan の掃き出し法によって解くことができるのですが、「その解の個数を求めよ」などと言われたときに詰まりがちな印象があったので、簡単に解説してみます。 なお、掃き出し法を要求する問題は競プロでは「実数」「 」「mod. p」の 3 パターンがあるイメージです。特に「解の個数を求めよ」という問題に関しては、 を変数の個数として 係数 解の個数 実数 一般には無限個 mod. となります。ここで、 は の特殊な場合 () なのですが、出題も多く bitset を用いた高速化なども決まったりするので特別扱いしています。 1. 掃き出し法が目指すもの まずは、掃き出し法が何をするためのアルゴリズムなのかについて、概説します。 1-1. 標準形 掃

                                    • テクノロジー
                                    • 2019/06/30 16:33
                                    • AtCoder ABC 125 C - GCD on Blackboard (2Q, 緑色, 300 点) - けんちょんの競プロ精進記録

                                      3 users

                                      drken1215.hatenablog.com

                                      累積和!累積和!累積和!!! でも累積和ならぬ累積 GCD なのと、左右両方から累積 GCD を求める。 問題へのリンク 問題概要 要素からなる数列 が与えられる。この数列に対して どれか一つ要素を選んで、 以下の好きな正の整数に書き換える という操作を行うことができる。そうしてできた数列全体の最大公約数として考えられる最大値を求めよ。 制約 考えたこと とりあえず問題の言い換えとして 個の値の中から 1 個だけ取り除いた 個の整数の最大公約数の最大値を求めよ という問題だと思うことができる。なぜなら、 を書き換えようと決めたとき、それ以外の 個の整数の最大公約数を として、答えを より大きくすることはできない。そして に書き換えれば にすることはできる。 よって、問題がわかりやすく言い換えられたが、愚直にやると取り除く値が 通りあって、それぞれについて 個の最大公約数をとるので、 の時間

                                      • テクノロジー
                                      • 2019/04/28 01:08
                                      • 桁 DP の思想 〜 K 以下の整数を走査するとはどういうことか 〜 - けんちょんの競プロ精進記録

                                        11 users

                                        drken1215.hatenablog.com

                                        K 以下の整数を分類する 今日の ABC D 問題 で話題になったので書いてみます。競プロで 非負整数 が の範囲を動くときの、〜〜〜の最大値を求めよ 非負整数 が の範囲を動くときの、〜〜〜という条件を満たすものは何通りあるか という形をした問題は非常に多いです。この種のタイプの問題に対して「思考停止で桁 DP」は大変有力ですが、そもそも 以下の整数というものがどんなものなのかを理解しておくことは有益だと思います。 例えば の場合については、以下を見れば一目瞭然です。 噂の D 問題は、この場合分けが頭にあれば自然に解ける問題でした。 桁 DP とは 桁 DP とは、まさに「 以下の整数が上記のように分類できることを利用した走査法」であると言えます。 上記のイメージを持って、桁 DP を学ぶとスッと頭に入る気がします。まずそもそも桁 DP を適用できるためには、 を定めたときの全体スコア

                                        • 暮らし
                                        • 2019/02/04 14:25
                                        • あとで読む
                                        • よくやる二項係数 (nCk mod. p)、逆元 (a^-1 mod. p) の求め方 - けんちょんの競プロ精進記録

                                          29 users

                                          drken1215.hatenablog.com

                                          1. 典型的な二項係数の求め方 競プロをしていると、「 mod 」を計算する場面にしばしば出くわします。最近では、 であることが多いですね。 mod の計算方法は、時と場合によって色んな方法が考えられますが、すぐ下で紹介する方法が最も頻繁に使用されています。多くの AtCoder のトッププレイヤーたちも使用している形式で、高速です。 使い方としては、最初に一度前処理として COMinit() を呼び出します。その後は、毎回 COM(n, k) 関数を呼べばよいです。 前処理 COMinit():計算量 クエリ処理 COM(n, k):計算量 1-1. mod の実装 この実装では、ACL (AtCoder Library) の modint を用いています。さらに下に、modint を使わない実装も載せています。 #include <iostream> using namespace s

                                          • テクノロジー
                                          • 2018/06/09 10:51
                                          • 競技プログラミング
                                          • Algorithm
                                          • math
                                          • Programming
                                          • あとで読む
                                          • 最短経路の個数も一緒に数え上げる最短経路アルゴリズム - けんちょんの競プロ精進記録

                                            5 users

                                            drken1215.hatenablog.com

                                            ARC 090 E - Avoiding Collision で話題になったこともあり、簡単にメモします。 最短経路を求める DP 的処理をするとき、DAG上のDP だろうと、BFS だろうと、Dijkstra だろうと、以下のような緩和処理をやっています // Edge e の緩和 int dp[MAX_V];  // dp[v] := 始点 s から頂点 v への最短経路長 if (dp[e.to] < dp[e.from] + e.cost) { dp[e.to] = dp[e.from] + e.cost; } これをちょっと変えるだけで、最短経路の本数も一緒に数え上げられます。 // Edge e の緩和 int dp[MAX_V];  // dp[v] := 始点 s から頂点 v への最短経路長 int num[MAX_V];  // num[v] := 始点 s から頂点

                                            • テクノロジー
                                            • 2018/02/09 08:16
                                            • Algorithm
                                            • Programming
                                            • hoge木 - けんちょんの競プロ精進記録

                                              6 users

                                              drken1215.hatenablog.com

                                              Qiita に移植しました 重みつき Union-Find 木とそれが使える問題のまとめ、および、牛ゲーについて

                                              • テクノロジー
                                              • 2018/02/01 14:11
                                              • Algorithm
                                              • Programming
                                              • あとで読む
                                              • O(2^n)から計算量を減らす問題 - けんちょんの競プロ精進記録

                                                4 users

                                                drken1215.hatenablog.com

                                                この記事は、Competitive Programming Advent Calendar Div2013の22日目の記事として書きました。 今年は「ナイーブにやるとO(2^n)になりそうな問題の計算量を落とす系の問題」を集めました。例えば、区間スケジューリング問題は、ナイーブに全探索しようと思うとn個の区間に対してそれぞれ「選ぶ」or「選ばない」の2択を行うO(2^n)の解法になりますが、Greedyアルゴリズムによって効率的に解くことができます。 このような問題のうち、特に、多項式時間や擬多項式時間で効率よく解けるものを中心に集めました。難易度としてはSRM DIV2 Hard、SRM DIV1 Medium程度のものが多いです。なお、個々の問題や解法についての説明はとてもあっさりしたものになっております。 また、個人の趣味の記事ということでインフォーマルな書き方をしております。競技プ

                                                • テクノロジー
                                                • 2013/12/23 00:09
                                                • programming
                                                • Kruskal法をココロから納得する - けんちょんの競プロ精進記録

                                                  3 users

                                                  drken1215.hatenablog.com

                                                  僕は、最小全域木を求めるKruskal法をココロから納得するのにとても長い時間が掛かってしまいました。本記事では、備忘録的な目的を兼ねて、少しKruskal法について書いてみたいと思います。 僕は、Kruskal法は今年5月頃初めて知ったのですが、そのときはどうしてコレで最小全域木が求まるのか、不思議でなりませんでした。その後6月頃にアルゴリズムイントロダクションを読んで、ひとまず証明は理解したのですが、イマイチなかなかイメージが掴めませんでした。さらに7月にはマトロイドの触りを勉強し、マトロイドのGreedyアルゴリズムからKruskal法が自然に導かれることを学んだのですが、それでもまだKruskal法をココロから納得するには至れませんでした。 それくらい、Kruskal法を納得するのにとても苦労しました。ようやく自分なりにKruskal法が納得できるようになったのは、マトロイドの交換

                                                  • 学び
                                                  • 2012/12/26 01:38
                                                  • マトロイドの凸構造 - けんちょんの競プロ精進記録

                                                    23 users

                                                    drken1215.hatenablog.com

                                                    この記事は、Competitive Programming Advent Calendar Div2012の12日目の記事として書きました。 0. はじめに 今回はマトロイドについて書きたいと思います。 マトロイドはGreedyとの関連でよく耳にします。では、そもそもマトロイドがGreedy性を持つのは何故でしょうか?実は、マトロイドは単に「Greedyの一例」として出て来るばかりでなく、「現在効率的なアルゴリズムが知られている問題の殆どはマトロイドが何かしら関わっている」と言える程にイイ構造を持っています。以前、以下のようなツイートをしました。 dpやってていつも思うのが、なんか凸凹してるなーと。凸凹し過ぎてdpじゃなきゃ解けないよな、みたいな感じ。マトロイドは凹んでるところがない凸なイメージ。だから、局所最適狙う貪欲法だけで最適解に辿り着ける。焼き鈍しなんて必要ない。 本記事では、この

                                                    • テクノロジー
                                                    • 2012/12/12 12:17
                                                    • Algorithm
                                                    • Graph
                                                    • dp
                                                    • 数学
                                                    • Programming
                                                    • math

                                                    このページはまだ
                                                    ブックマークされていません

                                                    このページを最初にブックマークしてみませんか?

                                                    『けんちょんの競プロ精進記録』の新着エントリーを見る

                                                    キーボードショートカット一覧

                                                    j次のブックマーク

                                                    k前のブックマーク

                                                    lあとで読む

                                                    eコメント一覧を開く

                                                    oページを開く

                                                    はてなブックマーク

                                                    • 総合
                                                    • 一般
                                                    • 世の中
                                                    • 政治と経済
                                                    • 暮らし
                                                    • 学び
                                                    • テクノロジー
                                                    • エンタメ
                                                    • アニメとゲーム
                                                    • おもしろ
                                                    • アプリ・拡張機能
                                                    • 開発ブログ
                                                    • ヘルプ
                                                    • お問い合わせ
                                                    • ガイドライン
                                                    • 利用規約
                                                    • プライバシーポリシー
                                                    • 利用者情報の外部送信について
                                                    • ガイドライン
                                                    • 利用規約
                                                    • プライバシーポリシー
                                                    • 利用者情報の外部送信について

                                                    公式Twitter

                                                    • 公式アカウント
                                                    • ホットエントリー

                                                    はてなのサービス

                                                    • はてなブログ
                                                    • はてなブログPro
                                                    • 人力検索はてな
                                                    • はてなブログ タグ
                                                    • はてなニュース
                                                    • ソレドコ
                                                    • App Storeからダウンロード
                                                    • Google Playで手に入れよう
                                                    Copyright © 2005-2025 Hatena. All Rights Reserved.
                                                    設定を変更しましたx