Submit Search
Upload
WUPC2nd G問題
•
1 like
•
646 views
D
Dai Hamada
Follow
第2回 早稲田大学プログラミングコンテストのG問題 : だるま落とし の解説スライドです。
Read less
Read more
Technology
Report
Share
Report
Share
1 of 14
Download now
Download to read offline
Recommended
Meeting12
Meeting12
nullzine
Nakayosi
Nakayosi
nyannyannyan
WUPC2nd 総評
WUPC2nd 総評
Dai Hamada
WUPC2nd B問題
WUPC2nd B問題
Dai Hamada
WUPC2nd D問題
WUPC2nd D問題
Dai Hamada
自然言語処理のための機械学習入門1章
自然言語処理のための機械学習入門1章
Hiroki Mizukami
ウェーブレット木の世界
ウェーブレット木の世界
Preferred Networks
実務者のためのかんたんScalaz
実務者のためのかんたんScalaz
Tomoharu ASAMI
Recommended
Meeting12
Meeting12
nullzine
Nakayosi
Nakayosi
nyannyannyan
WUPC2nd 総評
WUPC2nd 総評
Dai Hamada
WUPC2nd B問題
WUPC2nd B問題
Dai Hamada
WUPC2nd D問題
WUPC2nd D問題
Dai Hamada
自然言語処理のための機械学習入門1章
自然言語処理のための機械学習入門1章
Hiroki Mizukami
ウェーブレット木の世界
ウェーブレット木の世界
Preferred Networks
実務者のためのかんたんScalaz
実務者のためのかんたんScalaz
Tomoharu ASAMI
Convex Hull Trick
Convex Hull Trick
HCPC: 北海道大学競技プログラミングサークル
Why Reactive Matters #ScalaMatsuri
Why Reactive Matters #ScalaMatsuri
Yuta Okamoto
Jokyonokai
Jokyonokai
nwpmq516
Jokyonokai
Jokyonokai
nwpmq516
ナップサックDPを説明してみた
ナップサックDPを説明してみた
Koya Fukuda
ACLreading2014@Ace12358
ACLreading2014@Ace12358
Ace12358
WSDM2012読み会: Learning to Rank with Multi-Aspect Relevance for Vertical Search
WSDM2012読み会: Learning to Rank with Multi-Aspect Relevance for Vertical Search
sleepy_yoshi
Pyramid
Pyramid
tomerun
Gurobi python
Gurobi python
Mikio Kubo
凸最適化 〜 双対定理とソルバーCVXPYの紹介 〜
凸最適化 〜 双対定理とソルバーCVXPYの紹介 〜
Tomoki Yoshida
DP特集
DP特集
Dai Hamada
修士論文発表資料
修士論文発表資料
Dai Hamada
WUPC2nd C問題
WUPC2nd C問題
Dai Hamada
WUPC2nd A問題
WUPC2nd A問題
Dai Hamada
WUPC2nd I問題
WUPC2nd I問題
Dai Hamada
WUPC2nd E問題
WUPC2nd E問題
Dai Hamada
WUPC2012
WUPC2012
Dai Hamada
デジタル・フォレンジックの最新動向(2024年4月27日情洛会総会特別講演スライド)
デジタル・フォレンジックの最新動向(2024年4月27日情洛会総会特別講演スライド)
UEHARA, Tetsutaro
【早稲田AI研究会 講義資料】3DスキャンとTextTo3Dのツールを知ろう!(Vol.1)
【早稲田AI研究会 講義資料】3DスキャンとTextTo3Dのツールを知ろう!(Vol.1)
Hiroki Ichikura
モーダル間の変換後の一致性とジャンル表を用いた解釈可能性の考察 ~Text-to-MusicとText-To-ImageかつImage-to-Music...
モーダル間の変換後の一致性とジャンル表を用いた解釈可能性の考察 ~Text-to-MusicとText-To-ImageかつImage-to-Music...
博三 太田
クラウドネイティブなサーバー仮想化基盤 - OpenShift Virtualization.pdf
クラウドネイティブなサーバー仮想化基盤 - OpenShift Virtualization.pdf
FumieNakayama
自分史上一番早い2024振り返り〜コロナ後、仕事は通常ペースに戻ったか〜 by IoT fullstack engineer
自分史上一番早い2024振り返り〜コロナ後、仕事は通常ペースに戻ったか〜 by IoT fullstack engineer
Yuki Kikuchi
More Related Content
Similar to WUPC2nd G問題
Convex Hull Trick
Convex Hull Trick
HCPC: 北海道大学競技プログラミングサークル
Why Reactive Matters #ScalaMatsuri
Why Reactive Matters #ScalaMatsuri
Yuta Okamoto
Jokyonokai
Jokyonokai
nwpmq516
Jokyonokai
Jokyonokai
nwpmq516
ナップサックDPを説明してみた
ナップサックDPを説明してみた
Koya Fukuda
ACLreading2014@Ace12358
ACLreading2014@Ace12358
Ace12358
WSDM2012読み会: Learning to Rank with Multi-Aspect Relevance for Vertical Search
WSDM2012読み会: Learning to Rank with Multi-Aspect Relevance for Vertical Search
sleepy_yoshi
Pyramid
Pyramid
tomerun
Gurobi python
Gurobi python
Mikio Kubo
凸最適化 〜 双対定理とソルバーCVXPYの紹介 〜
凸最適化 〜 双対定理とソルバーCVXPYの紹介 〜
Tomoki Yoshida
Similar to WUPC2nd G問題
(10)
Convex Hull Trick
Convex Hull Trick
Why Reactive Matters #ScalaMatsuri
Why Reactive Matters #ScalaMatsuri
Jokyonokai
Jokyonokai
Jokyonokai
Jokyonokai
ナップサックDPを説明してみた
ナップサックDPを説明してみた
ACLreading2014@Ace12358
ACLreading2014@Ace12358
WSDM2012読み会: Learning to Rank with Multi-Aspect Relevance for Vertical Search
WSDM2012読み会: Learning to Rank with Multi-Aspect Relevance for Vertical Search
Pyramid
Pyramid
Gurobi python
Gurobi python
凸最適化 〜 双対定理とソルバーCVXPYの紹介 〜
凸最適化 〜 双対定理とソルバーCVXPYの紹介 〜
More from Dai Hamada
DP特集
DP特集
Dai Hamada
修士論文発表資料
修士論文発表資料
Dai Hamada
WUPC2nd C問題
WUPC2nd C問題
Dai Hamada
WUPC2nd A問題
WUPC2nd A問題
Dai Hamada
WUPC2nd I問題
WUPC2nd I問題
Dai Hamada
WUPC2nd E問題
WUPC2nd E問題
Dai Hamada
WUPC2012
WUPC2012
Dai Hamada
More from Dai Hamada
(7)
DP特集
DP特集
修士論文発表資料
修士論文発表資料
WUPC2nd C問題
WUPC2nd C問題
WUPC2nd A問題
WUPC2nd A問題
WUPC2nd I問題
WUPC2nd I問題
WUPC2nd E問題
WUPC2nd E問題
WUPC2012
WUPC2012
Recently uploaded
デジタル・フォレンジックの最新動向(2024年4月27日情洛会総会特別講演スライド)
デジタル・フォレンジックの最新動向(2024年4月27日情洛会総会特別講演スライド)
UEHARA, Tetsutaro
【早稲田AI研究会 講義資料】3DスキャンとTextTo3Dのツールを知ろう!(Vol.1)
【早稲田AI研究会 講義資料】3DスキャンとTextTo3Dのツールを知ろう!(Vol.1)
Hiroki Ichikura
モーダル間の変換後の一致性とジャンル表を用いた解釈可能性の考察 ~Text-to-MusicとText-To-ImageかつImage-to-Music...
モーダル間の変換後の一致性とジャンル表を用いた解釈可能性の考察 ~Text-to-MusicとText-To-ImageかつImage-to-Music...
博三 太田
クラウドネイティブなサーバー仮想化基盤 - OpenShift Virtualization.pdf
クラウドネイティブなサーバー仮想化基盤 - OpenShift Virtualization.pdf
FumieNakayama
自分史上一番早い2024振り返り〜コロナ後、仕事は通常ペースに戻ったか〜 by IoT fullstack engineer
自分史上一番早い2024振り返り〜コロナ後、仕事は通常ペースに戻ったか〜 by IoT fullstack engineer
Yuki Kikuchi
TataPixel: 畳の異方性を利用した切り替え可能なディスプレイの提案
TataPixel: 畳の異方性を利用した切り替え可能なディスプレイの提案
sugiuralab
AWS の OpenShift サービス (ROSA) を使った OpenShift Virtualizationの始め方.pdf
AWS の OpenShift サービス (ROSA) を使った OpenShift Virtualizationの始め方.pdf
FumieNakayama
CTO, VPoE, テックリードなどリーダーポジションに登用したくなるのはどんな人材か?
CTO, VPoE, テックリードなどリーダーポジションに登用したくなるのはどんな人材か?
akihisamiyanaga1
業務で生成AIを活用したい人のための生成AI入門講座(社外公開版) 2024年4月作成
業務で生成AIを活用したい人のための生成AI入門講座(社外公開版) 2024年4月作成
Hiroshi Tomioka
Recently uploaded
(9)
デジタル・フォレンジックの最新動向(2024年4月27日情洛会総会特別講演スライド)
デジタル・フォレンジックの最新動向(2024年4月27日情洛会総会特別講演スライド)
【早稲田AI研究会 講義資料】3DスキャンとTextTo3Dのツールを知ろう!(Vol.1)
【早稲田AI研究会 講義資料】3DスキャンとTextTo3Dのツールを知ろう!(Vol.1)
モーダル間の変換後の一致性とジャンル表を用いた解釈可能性の考察 ~Text-to-MusicとText-To-ImageかつImage-to-Music...
モーダル間の変換後の一致性とジャンル表を用いた解釈可能性の考察 ~Text-to-MusicとText-To-ImageかつImage-to-Music...
クラウドネイティブなサーバー仮想化基盤 - OpenShift Virtualization.pdf
クラウドネイティブなサーバー仮想化基盤 - OpenShift Virtualization.pdf
自分史上一番早い2024振り返り〜コロナ後、仕事は通常ペースに戻ったか〜 by IoT fullstack engineer
自分史上一番早い2024振り返り〜コロナ後、仕事は通常ペースに戻ったか〜 by IoT fullstack engineer
TataPixel: 畳の異方性を利用した切り替え可能なディスプレイの提案
TataPixel: 畳の異方性を利用した切り替え可能なディスプレイの提案
AWS の OpenShift サービス (ROSA) を使った OpenShift Virtualizationの始め方.pdf
AWS の OpenShift サービス (ROSA) を使った OpenShift Virtualizationの始め方.pdf
CTO, VPoE, テックリードなどリーダーポジションに登用したくなるのはどんな人材か?
CTO, VPoE, テックリードなどリーダーポジションに登用したくなるのはどんな人材か?
業務で生成AIを活用したい人のための生成AI入門講座(社外公開版) 2024年4月作成
業務で生成AIを活用したい人のための生成AI入門講座(社外公開版) 2024年4月作成
WUPC2nd G問題
1.
第2回 早稲⽥田⼤大学プログラミングコンテスト
G: だるま落落とし keyword: ⼆二分探索索、データ構造
2.
問題概要 a[n-1]
. . . a[2] a[1] a[0] 2H : ハンマーの幅
3.
問題概要 a[n-1]
. . . arg a[2] a[1] a[0] 2H : ハンマーの幅 [!] addクエリ : ⾼高さargのブロックを上に追加
4.
問題概要 a[n-1]
. . . a[2] H a[1] H a[0] arg [!] challengeクエリ : ⾼高さarg(>=H)で叩く
5.
問題概要 a[n-1]
. . . だるま落落としをシミュレーションし、 a[2] クエリをたくさん処理理してください。 a[1] H H a[0] arg [!] challengeクエリ : ⾼高さarg(>=H)で叩く
6.
制約 ¤ 制約
¤ 初期ブロックの数 <= 100,000 ¤ クエリの数 <= 100,000
7.
愚直にやると ¤ 配列列による実装 ¤
配列列の各要素にだるまの⾼高さを持つ ¤ 各クエリに対する処理理 ¤ addクエリ ¤ 配列列の末尾に追加 / O(1) ¤ challengeクエリ ¤ どのブロックが叩かれるか探す / O(N) ¤ “go”の場合、ブロックを詰める / O(N) ¤ クエリ数が多いのでこれでは間に合わない。
8.
まず考えるべきこと ¤ ⾼高さの累累積和を持っておく ¤
addクエリ ¤ 配列列の末尾に追加 / O(1) ¤ challengeクエリ ¤ どのブロックが叩かれるか探す / ⼆二分探索索でO(logN) ¤ “go”の場合、ブロックを詰める / O(N) ¤ ハンマーの上⾯面と下⾯面に当たるブロックの位置を探す。 ¤ 両者が同じなら “go” 違うなら “stop” ¤ ブロックを詰める操作をなんとかして⼯工夫したい。
9.
重要な考え⽅方 a[n-1]
. . . a[n-2] . a[2] . . a[1] 削除 a[1] a[0] a[0] [!] a[1] を抜かして配列列を詰めた
10.
重要な考え⽅方 a[n-1]
. . . a[n-1] . a[2] . . a[1] ⾼高さを a[2] 0に a[1] = 0 a[0] a[0] [!] a[1] を 0 にした ⇒ 配列列サイズは変えなくていい
11.
解決策 ¤ Fenwick Tree(BIT
: Binary Indexed Treeとも) ¤ 累累積和を効率率率よく処理理できるデータ構造! ¤ 以下のことがそれぞれO(logN)で可能 ¤ a[1]〜~a[k] までの累累積和を求める ¤ a[k] の値を更更新する ¤ ⇒ 今回の⽤用途にピッタリ! ¤ addクエリ ¤ ブロックの総数を覚えておいて、末尾位置に更更新クエリ ¤ challengeクエリ ¤ 累累積和クエリを使って⼆二分探索索し、位置を求める ¤ “go” なら、⾒見見つけた位置のブロックに更更新クエリ
12.
⼀一番上のブロックを叩く時 ¤ 上部に処理理後ブロック(サイズが0)が溜溜まると誤判定の可能性が! ¤ ⼀一番上かどうかの判定
¤ シミュレーション中、 だるまの⾼高さを持っておく(Hとおく) ¤ ハンマーの下⾯面位置に当たる ブロックの最下部位置を X とする サイズ0 = 処理理後 ¤ X + (ブロックの⾼高さ) = H なら⼀一番上! ⼀一番上
13.
解法 ¤ クエリを先読みして、登場するブロック数をカウント ¤ そのサイズでFenwick
Treeを初期化 ¤ クエリが来るたびに、以下の処理理をする ¤ addクエリ ¤ 現在の末尾位置にブロックのサイズで更更新クエリ ¤ challengeクエリ ¤ 累累積和クエリを使って⼆二分探索索し、位置を求める ¤ “go” なら、⾒見見つけた位置のブロックに更更新クエリ
14.
統計 ¤ First AC
: hos.lyric* (56:09) ¤ 正解数 : 31 ¤ 通した⼈人(31/205) : 15% ¤ ACだった解答(31/281) : 11%
Download now