競プロに関するuni745eのブックマーク (7)

  • Pythonでダイクストラアルゴリズムを実装した - フツーって言うなぁ!

    しばらく忙しくて,更新が途絶えてしまいました. 少なくとも今年度中は,2週間に1回更新を続けていきたいです. 題. 競技プログラミングで,ダイクストラアルゴリズムを実装する機会があったので,ソースコードを載せておきます. ダイクストラアルゴリズムとは? ダイクストラアルゴリズム(ダイクストラ法)とは,重み付きグラフの探索アルゴリズムの一種で,すべての辺の重みが非負なグラフの単一始点最短経路問題を解くためのアルゴリズムです. グラフの始点が与えられた時,そこから他の(すべての)頂点までの最短経路と,そこまでの重みの和(最短距離)を求めることができます. ダイクストラ法 - Wikipedia ナイーブなダイクストラアルゴリズムはO(|V|^2)ですが,プライオリティキュー(優先度付きキュー)と呼ばれるデータ構造を用いることで,O(|E|log|V|)程度で最短経路を求められます. 優先度つ

    Pythonでダイクストラアルゴリズムを実装した - フツーって言うなぁ!
  • Future Contestを無料運用にした - のみろぐ

    まえがき 使ってるもの クラウド 言語 アーキテクチャ やったことを簡潔に お金がやばくなる 無料運用する方法をググってみる 自分でapp.yamlを書いてみる お金が減り続ける お金が減り続ける2 GAEの動作環境 スタンダード環境を試してみる Future Contestをスタンダード環境に切り替える 定期的に更新する その他 AtCoderAPIサーバーを立てる ページがプレーンテキストとして表示される ページが更新されない 結果 感想 これから まえがき Future Contestとは?→これ 初めてWebサイト作ってみたで作ったサイトを無料運用にしたのでログを取っておく。 ただのメモなので技術的なことは詳しく書いてない 時系列順に書いてく たぶんめっちゃアホみたいなことやってる 使ってるもの クラウド GAE 言語 Go アーキテクチャ 最終的には以下のようなアーキテクチャに

    Future Contestを無料運用にした - のみろぐ
    uni745e
    uni745e 2018/11/02
    プロだ!!”なぜかお金が減り続ける” 怖い
  • Python:重み付きUnion-Find木について - あっとのTECH LOG

    今回は素集合データ構造であるUnion-Find木に重みを付けた、Weighted(重み付き) Union-Find木についてまとめます。 Union-Find木についてよくわからないという方は、 at274.hatenablog.com こちらを先に見ていただいた方がいいかと思います。 Weighted Union-Find木について Pythonによる実装 準備 検索(find) 併合(union) 完成形 Weighted Union-Find木について 実装前に、Weighted Union-Findがどんなものかざっくり説明しておきましょう。 まずはイメージ図を見てやってください。 特に深い説明はいらないかと思います。 イメージ図通りです。 例えば、「AさんはBさんより3歳年上。CさんはBさんより2つ下。ではAさんはCさんよりいくつ上?(もしくは下?)」みたいな問題に対して使えま

    Python:重み付きUnion-Find木について - あっとのTECH LOG
    uni745e
    uni745e 2018/10/21
    すごく参考になった。木のランク差に応じた重みの計算方法がわかりやすかった。
  • Pythonの知っておくと良い細かい処理速度の違い8個 - kumilog.net

    はじめに 標準入力 input と sys.stdin.readline ソート sort と sorted ソートの key ループ for と while リスト リストの初期化 二次元配列の場合 リストの値参照 リストへの値追加 それぞれの処理速度 まとめ はじめに 最近、PythonAtCoderなどの競技プログラミングに挑戦しています。これまであまりに気にしなかったけど、ちょっとした書き方で処理速度が変わってくることに気づいたので、これを気に少し調べてみました。 目次にあるように、標準入力、ソート、ループ、リストについて、計8個の処理の速度比較を行いました。処理速度の計測方法は、Mac Book Pro*1を使い、timeitでそれぞれ100回計測*2し、平均と標準偏差を求めています。 結果だけ知りたい方は、まとめへどうぞ。 計測に用いたコードは以下にあります。 github.

    Pythonの知っておくと良い細かい処理速度の違い8個 - kumilog.net
    uni745e
    uni745e 2018/10/13
    これは良記事。今日からreadline使います。
  • AtCoder に登録したら次にやること ~ これだけ解けば十分闘える!過去問精選 10 問 ~ - Qiita

    記事を終えた次は? AtCoder Beginners Selection を終えたら、AtCoder 上の過去問が AtCoder Problems に集大成されていますので、片っ端から埋めるような気持ちで精進していきましょう。記事の続編として AtCoder 版!蟻 (初級編) AtCoder 版!蟻 (中級編) AtCoder 版!蟻 (上級編) AtCoder 版!蟻 (発展的トピック編) も執筆しましたので参考にしていただけたらと思います。また、アルゴリズムとデータ構造に関するトピックを集大成した書籍として、 問題解決力を鍛える!アルゴリズムとデータ構造 (通称、けんちょん) を上梓しました。ぜひ読んでみてください。 1. AtCoder とは AtCoder は以下のコンテストサイトを運営しています。今後常に訪れることになるサイトです: AtCoder コンテスト

    AtCoder に登録したら次にやること ~ これだけ解けば十分闘える!過去問精選 10 問 ~ - Qiita
  • いもす法 - いもす研 (imos laboratory)

    いもす法とは,累積和のアルゴリズムを多次元,多次数に拡張したものです.競技プログラミングでは 2 次元 1 次のものまでしか出題されませんが,2012 年の研究成果としてこれをより高次元の空間により高次数のいもす法を適用することにより信号処理分野・画像処理分野において利便性があることがわかっています. いもす法の基: 1 次元 0 次いもす法 最もシンプルな「いもす法」は 1 次元上に 0 次関数(矩形関数や階段関数などのように上部が平らな関数)を足すものです. 問題例 あなたは喫茶店を経営しています.あなたの喫茶店を訪れたそれぞれのお客さん i\ (0 \leq i \lt C) について入店時刻 S_i と出店時刻 E_i が与えられます(0 \leq S_i \lt E_i \leq T).同時刻にお店にいた客の数の最大値 M はいくつでしょうか.ただし,同時刻に出店と入店がある場

    uni745e
    uni745e 2017/03/05
    imos法
  • pythonで競技プログラミングをする際に便利なほかの関数とか5選 - roiti46's blog

    この記事はCompetitive Programming (その2) Advent Calendar 2015の21日目の記事です(遅れてすみません) 20日目はMさんの高速なビット行列乗算、 22日目はir5さんのtopcoder ボツ問供養です。 なにを書くのか? Competitive Programming Advent Calendar 2015で11日目のn_knuu6さんがpython競技プログラミングをする際に便利な関数とか5選を紹介されてました。 今回はその記事では紹介されていなかった競プロに便利な関数・データ構造をいくつか紹介したいと思います。 sys.recursionlimit python競プロを使い始めた人がよくハマる落とし穴として再帰関数の再帰深さ制限があります。 >>> def mysum(n): ... if n == 1: return 1 ...

    pythonで競技プログラミングをする際に便利なほかの関数とか5選 - roiti46's blog
    uni745e
    uni745e 2017/02/27
    defaultdict便利
  • 1