atwiki-logo
  • 新規作成
    • 新規ページ作成
    • 新規ページ作成(その他)
      • このページをコピーして新規ページ作成
      • このウィキ内の別ページをコピーして新規ページ作成
      • このページの子ページを作成
    • 新規ウィキ作成
  • 編集
    • ページ編集
    • ページ編集(簡易版)
    • ページ名変更
    • メニュー非表示でページ編集
    • ページの閲覧/編集権限変更
    • ページの編集モード変更
    • このページにファイルをアップロード
    • メニューを編集
    • 右メニューを編集
  • バージョン管理
    • 最新版変更点(差分)
    • 編集履歴(バックアップ)
    • アップロードファイル履歴
    • ページ操作履歴
  • ページ一覧
    • ページ一覧
    • このウィキのタグ一覧
    • このウィキのタグ(更新順)
    • このページの全コメント一覧
    • このウィキの全コメント一覧
    • おまかせページ移動
  • RSS
    • このウィキの更新情報RSS
    • このウィキ新着ページRSS
  • ヘルプ
    • ご利用ガイド
    • Wiki初心者向けガイド(基本操作)
    • このウィキの管理者に連絡
    • 運営会社に連絡(不具合、障害など)
ページ検索 メニュー
早稲田大学チームvivid_turtle 知見共有@ ウィキ
  • ウィキ募集バナー
  • 目安箱バナー
  • 操作ガイド
  • 新規作成
  • 編集する
  • 全ページ一覧
  • 登録/ログイン
ページ一覧
早稲田大学チームvivid_turtle 知見共有@ ウィキ
  • ウィキ募集バナー
  • 目安箱バナー
  • 操作ガイド
  • 新規作成
  • 編集する
  • 全ページ一覧
  • 登録/ログイン
ページ一覧
早稲田大学チームvivid_turtle 知見共有@ ウィキ
ページ検索 メニュー
  • 新規作成
  • 編集する
  • 登録/ログイン
  • 管理メニュー
管理メニュー
  • 新規作成
    • 新規ページ作成
    • 新規ページ作成(その他)
      • このページをコピーして新規ページ作成
      • このウィキ内の別ページをコピーして新規ページ作成
      • このページの子ページを作成
    • 新規ウィキ作成
  • 編集
    • ページ編集
    • ページ編集(簡易版)
    • ページ名変更
    • メニュー非表示でページ編集
    • ページの閲覧/編集権限変更
    • ページの編集モード変更
    • このページにファイルをアップロード
    • メニューを編集
    • 右メニューを編集
  • バージョン管理
    • 最新版変更点(差分)
    • 編集履歴(バックアップ)
    • アップロードファイル履歴
    • ページ操作履歴
  • ページ一覧
    • このウィキの全ページ一覧
    • このウィキのタグ一覧
    • このウィキのタグ一覧(更新順)
    • このページの全コメント一覧
    • このウィキの全コメント一覧
    • おまかせページ移動
  • RSS
    • このwikiの更新情報RSS
    • このwikiの新着ページRSS
  • ヘルプ
    • ご利用ガイド
    • Wiki初心者向けガイド(基本操作)
    • このウィキの管理者に連絡
    • 運営会社に連絡する(不具合、障害など)
  • atwiki
  • 早稲田大学チームvivid_turtle 知見共有@ ウィキ
  • ダブリングの使い所さん

早稲田大学チームvivid_turtle 知見共有@ ウィキ

ダブリングの使い所さん

最終更新:2019年09月21日 23:17

vivid_turtle

- view
メンバー限定 登録/ログイン
いろいろな応用が利く、Atcoder700以上らへんでちょくちょく見るダブリングという手法を書く。

概要


まず初めに、ダブリングを応用できそうなシチュエーションについて書く。

ある要素から見て、次の要素は簡単に短時間で求められるが、K個あとの要素は、O(n)かかったりして、簡単に短時間でも止まらない。

この時、ダブリングという手法を利用すると、全体の大きさをMとすると
前計算O(M log M) + クエリごとに、N個先を見るとしてO(log N)
で押さえられる。

詳しいダブリングの解説は、http://satanic0258.hatenablog.com/entry/2017/02/23/222647

satanicさんのブログ参照。

ダブリングのテンプレとしては

const int jlimit = (int)(log2(100000)) + 1;
 
int dp[100000][limitj];//dp[i][j] := i個目のモノから2^j個先のモノの番号
 
for(int i = 0; i < M; i++){
    dp[i][0] = ???;//j == 0についての初期化
}
 
for(int j = 1; j < limitj; j++){
    for(int i = 0; i <= M; i++){
        //i個目のモノから2^j個先のモノは、「i個目のモノから2^(j - 1)個先のモノ」からの「2^(j - 1)個先のモノ」
        //ex  3個目のモノから4個先のモノは、「3個目のモノから 2 個先のモノ」からの「2個先のモノ」
        //式はつぎのように書くといい。
        dp[i][j] = dp[dp[i][j - 1][j - 1];
    }
}
 
//クエリを求めると次のようにする。
 
int l, N;//lからN個先
 
for(int j = limitj - 1; j >= 0; j--){
    if ((1 << j) <= N){
        N -= (1 << j);
        l = dp[l][j];
    }
}
 
 

例 ARC060 E(700) https://atcoder.jp/contests/arc060/tasks/arc060_c


それぞれのホテルのすぐ次は、二分探索やしゃくとりで簡単に求めることができる。しかし、N個先となればO(N)かけて走査しないとできない。

これは上の条件と全く持って一致してるのでそのまま適用できる。
「ダブリングの使い所さん」をウィキ内検索
LINE
シェア
Tweet
早稲田大学チームvivid_turtle 知見共有@ ウィキ
記事メニュー

メニュー

  • トップページ
  • プラグイン紹介
  • メニュー
  • 右メニュー
  • アルゴリズム別知見
  • 個別問題知見



リンク

  • @wiki
  • @wikiご利用ガイド




ここを編集
記事メニュー2

更新履歴

取得中です。


ここを編集
人気記事ランキング
  1. bitsetでの定数倍改善
  2. 中央値と二分探索
  3. 区間DP
もっと見る
最近更新されたページ
  • 1593日前

    bitsetでの定数倍改善
  • 2206日前

    しゃくとりの大原則
  • 2207日前

    アルゴリズム別知見
  • 2209日前

    グリッド上の構築
  • 2210日前

    ARC096-D
  • 2210日前

    ARC092-D
  • 2210日前

    個別問題知見
  • 2214日前

    ダブリングの使い所さん
  • 2220日前

    文字列と動的計画法
  • 2220日前

    数え上げのDPのさまざま(知らなかったこと)
もっと見る
人気記事ランキング
  1. bitsetでの定数倍改善
  2. 中央値と二分探索
  3. 区間DP
もっと見る
最近更新されたページ
  • 1593日前

    bitsetでの定数倍改善
  • 2206日前

    しゃくとりの大原則
  • 2207日前

    アルゴリズム別知見
  • 2209日前

    グリッド上の構築
  • 2210日前

    ARC096-D
  • 2210日前

    ARC092-D
  • 2210日前

    個別問題知見
  • 2214日前

    ダブリングの使い所さん
  • 2220日前

    文字列と動的計画法
  • 2220日前

    数え上げのDPのさまざま(知らなかったこと)
もっと見る
ウィキ募集バナー
急上昇Wikiランキング

急上昇中のWikiランキングです。今注目を集めている話題をチェックしてみよう!

  1. グノーシア台詞集 @ ウィキ
  2. PC版Webサカ@ ウィキ
  3. 千鳥の鬼レンチャン サビだけカラオケデータベース
  4. まどドラ攻略wiki
  5. 鬼レンチャンWiki
  6. VCR GTA3まとめウィキ
  7. アサルトリリィ wiki
  8. ドラゴンクエスト モンスターバトルロードII攻略@WIKI
  9. asagaolabo @ ポップン百科大事典
  10. MadTown GTA (Beta) まとめウィキ
もっと見る
人気Wikiランキング

atwikiでよく見られているWikiのランキングです。新しい情報を発見してみよう!

  1. アニヲタWiki(仮)
  2. ゲームカタログ@Wiki ~名作からクソゲーまで~
  3. MADTOWNGTAまとめwiki
  4. 初音ミク Wiki
  5. ストグラ まとめ @ウィキ
  6. 検索してはいけない言葉 @ ウィキ
  7. 機動戦士ガンダム バトルオペレーション2攻略Wiki 3rd Season
  8. 発車メロディーwiki
  9. MadTown GTA (Beta) まとめウィキ
  10. 機動戦士ガンダム EXTREME VS.2 INFINITEBOOST wiki
もっと見る
新規Wikiランキング

最近作成されたWikiのアクセスランキングです。見るだけでなく加筆してみよう!

  1. MadTown GTA (Beta) まとめウィキ
  2. MADTOWNGTAまとめwiki
  3. まどドラ攻略wiki
  4. ちいぽけ攻略
  5. シュガードール情報まとめウィキ
  6. 戦国ダイナスティ攻略Wiki@ウィキ
  7. Last Z: Survival Shooter @ ウィキ
  8. Shoboid RPまとめwiki
  9. ソニックレーシング クロスワールド 攻略@ ウィキ
  10. SurrounDead 攻略 (非公式wiki)
もっと見る
全体ページランキング

最近アクセスの多かったページランキングです。話題のページを見に行こう!

  1. 参加者一覧 - MADTOWNGTAまとめwiki
  2. angler - MADTOWNGTAまとめwiki
  3. 参加者一覧 - MadTown GTA (Beta) まとめウィキ
  4. 白狐 - MADTOWNGTAまとめwiki
  5. XVI - MADTOWNGTAまとめwiki
  6. 鬼レンチャン(レベル順) - 鬼レンチャンWiki
  7. Black Rose - MADTOWNGTAまとめwiki
  8. ギャング - MADTOWNGTAまとめwiki
  9. 魔獣トゲイラ - バトルロイヤルR+α ファンフィクション(二次創作など)総合wiki
  10. 参加者一覧 - ストグラ まとめ @ウィキ
もっと見る

  • このWikiのTOPへ
  • 全ページ一覧
  • アットウィキTOP
  • 利用規約
  • プライバシーポリシー

2019 AtWiki, Inc.