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
TSAL operation mechanism and circuit diagram.pdf
TSAL operation mechanism and circuit diagram.pdf
taisei2219
論文紹介:Content-Aware Token Sharing for Efficient Semantic Segmentation With Vis...
論文紹介:Content-Aware Token Sharing for Efficient Semantic Segmentation With Vis...
Toru Tamaki
Open Source UN-Conference 2024 Kawagoe - 独自OS「DaisyOS GB」の紹介
Open Source UN-Conference 2024 Kawagoe - 独自OS「DaisyOS GB」の紹介
Yuma Ohgami
[DevOpsDays Tokyo 2024] 〜デジタルとアナログのはざまに〜 スマートビルディング爆速開発を支える 自動化テスト戦略
[DevOpsDays Tokyo 2024] 〜デジタルとアナログのはざまに〜 スマートビルディング爆速開発を支える 自動化テスト戦略
Ryo Sasaki
論文紹介:Automated Classification of Model Errors on ImageNet
論文紹介:Automated Classification of Model Errors on ImageNet
Toru Tamaki
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
TSAL operation mechanism and circuit diagram.pdf
TSAL operation mechanism and circuit diagram.pdf
taisei2219
論文紹介:Content-Aware Token Sharing for Efficient Semantic Segmentation With Vis...
論文紹介:Content-Aware Token Sharing for Efficient Semantic Segmentation With Vis...
Toru Tamaki
Open Source UN-Conference 2024 Kawagoe - 独自OS「DaisyOS GB」の紹介
Open Source UN-Conference 2024 Kawagoe - 独自OS「DaisyOS GB」の紹介
Yuma Ohgami
[DevOpsDays Tokyo 2024] 〜デジタルとアナログのはざまに〜 スマートビルディング爆速開発を支える 自動化テスト戦略
[DevOpsDays Tokyo 2024] 〜デジタルとアナログのはざまに〜 スマートビルディング爆速開発を支える 自動化テスト戦略
Ryo Sasaki
論文紹介:Automated Classification of Model Errors on ImageNet
論文紹介:Automated Classification of Model Errors on ImageNet
Toru Tamaki
SOPを理解する 2024/04/19 の勉強会で発表されたものです
SOPを理解する 2024/04/19 の勉強会で発表されたものです
iPride Co., Ltd.
論文紹介:Semantic segmentation using Vision Transformers: A survey
論文紹介:Semantic segmentation using Vision Transformers: A survey
Toru Tamaki
Postman LT Fukuoka_Quick Prototype_By Daniel
Postman LT Fukuoka_Quick Prototype_By Daniel
danielhu54
スマートフォンを用いた新生児あやし動作の教示システム
スマートフォンを用いた新生児あやし動作の教示システム
sugiuralab
Recently uploaded
(9)
TSAL operation mechanism and circuit diagram.pdf
TSAL operation mechanism and circuit diagram.pdf
論文紹介:Content-Aware Token Sharing for Efficient Semantic Segmentation With Vis...
論文紹介:Content-Aware Token Sharing for Efficient Semantic Segmentation With Vis...
Open Source UN-Conference 2024 Kawagoe - 独自OS「DaisyOS GB」の紹介
Open Source UN-Conference 2024 Kawagoe - 独自OS「DaisyOS GB」の紹介
[DevOpsDays Tokyo 2024] 〜デジタルとアナログのはざまに〜 スマートビルディング爆速開発を支える 自動化テスト戦略
[DevOpsDays Tokyo 2024] 〜デジタルとアナログのはざまに〜 スマートビルディング爆速開発を支える 自動化テスト戦略
論文紹介:Automated Classification of Model Errors on ImageNet
論文紹介:Automated Classification of Model Errors on ImageNet
SOPを理解する 2024/04/19 の勉強会で発表されたものです
SOPを理解する 2024/04/19 の勉強会で発表されたものです
論文紹介:Semantic segmentation using Vision Transformers: A survey
論文紹介:Semantic segmentation using Vision Transformers: A survey
Postman LT Fukuoka_Quick Prototype_By Daniel
Postman LT Fukuoka_Quick Prototype_By Daniel
スマートフォンを用いた新生児あやし動作の教示システム
スマートフォンを用いた新生児あやし動作の教示システム
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