Download free for 30 days
Sign in
Upload
Language (EN)
Support
Business
Mobile
Social Media
Marketing
Technology
Art & Photos
Career
Design
Education
Presentations & Public Speaking
Government & Nonprofit
Healthcare
Internet
Law
Leadership & Management
Automotive
Engineering
Software
Recruiting & HR
Retail
Sales
Services
Science
Small Business & Entrepreneurship
Food
Environment
Economy & Finance
Data & Analytics
Investor Relations
Sports
Spiritual
News & Politics
Travel
Self Improvement
Real Estate
Entertainment & Humor
Health & Medicine
Devices & Hardware
Lifestyle
Change Language
Language
English
Español
Português
Français
Deutsche
Cancel
Save
EN
DH
Uploaded by
Dai Hamada
PDF, PPTX
667 views
WUPC2nd G問題
第2回 早稲田大学プログラミングコンテストのG問題 : だるま落とし の解説スライドです。
Technology
◦
Read more
1
Save
Share
Embed
Embed presentation
Download
Download as PDF, PPTX
1
/ 14
2
/ 14
3
/ 14
4
/ 14
5
/ 14
6
/ 14
7
/ 14
8
/ 14
9
/ 14
10
/ 14
11
/ 14
12
/ 14
13
/ 14
14
/ 14
More Related Content
PPTX
Meeting12
by
nullzine
XLSX
Nakayosi
by
nyannyannyan
PDF
WUPC2nd 総評
by
Dai Hamada
PDF
WUPC2nd B問題
by
Dai Hamada
PDF
WUPC2nd D問題
by
Dai Hamada
PDF
WUPC2012
by
Dai Hamada
PPTX
Arc 010 d
by
Yuma Inoue
PDF
DDPC 2016 予選 解説
by
AtCoder Inc.
Meeting12
by
nullzine
Nakayosi
by
nyannyannyan
WUPC2nd 総評
by
Dai Hamada
WUPC2nd B問題
by
Dai Hamada
WUPC2nd D問題
by
Dai Hamada
WUPC2012
by
Dai Hamada
Arc 010 d
by
Yuma Inoue
DDPC 2016 予選 解説
by
AtCoder Inc.
Similar to WUPC2nd G問題
PPTX
AtCoder167Dをダブリングで解く
by
Akira KANAI
PDF
Ruby科学データ処理ツールの開発 NArrayとPwrake
by
Masahiro Tanaka
PDF
Pyramid
by
tomerun
PDF
指数時間アルゴリズム入門
by
Yoichi Iwata
PDF
Abc009
by
AtCoder Inc.
PDF
AtCoder Beginner Contest 009 解説
by
AtCoder Inc.
PDF
Ibisml2011 06-20
by
Yasuo Tabei
PDF
プログラミングコンテストでの乱択アルゴリズム
by
Takuya Akiba
PDF
プログラミングコンテストでのデータ構造 2 ~平衡二分探索木編~
by
Takuya Akiba
PDF
Binary indexed tree
by
HCPC: 北海道大学競技プログラミングサークル
PDF
CODE THANKS FESTIVAL 2014 A日程 解説
by
AtCoder Inc.
PDF
プログラミングコンテストでの動的計画法
by
Takuya Akiba
PDF
programming camp 2008, introduction of programming, algorithm
by
Hiro Yoshioka
PDF
Sort
by
oupc
PDF
PFDS 7.4
by
rf0444
PPTX
純粋関数型アルゴリズム入門
by
Kimikazu Kato
PDF
AtCoder Beginner Contest 011 解説
by
AtCoder Inc.
PDF
AtCoder Beginner Contest 008 解説
by
AtCoder Inc.
PDF
PFDS 5.5 Pairing heap
by
昌平 村山
PDF
U・N・C・O
by
tomerun
AtCoder167Dをダブリングで解く
by
Akira KANAI
Ruby科学データ処理ツールの開発 NArrayとPwrake
by
Masahiro Tanaka
Pyramid
by
tomerun
指数時間アルゴリズム入門
by
Yoichi Iwata
Abc009
by
AtCoder Inc.
AtCoder Beginner Contest 009 解説
by
AtCoder Inc.
Ibisml2011 06-20
by
Yasuo Tabei
プログラミングコンテストでの乱択アルゴリズム
by
Takuya Akiba
プログラミングコンテストでのデータ構造 2 ~平衡二分探索木編~
by
Takuya Akiba
Binary indexed tree
by
HCPC: 北海道大学競技プログラミングサークル
CODE THANKS FESTIVAL 2014 A日程 解説
by
AtCoder Inc.
プログラミングコンテストでの動的計画法
by
Takuya Akiba
programming camp 2008, introduction of programming, algorithm
by
Hiro Yoshioka
Sort
by
oupc
PFDS 7.4
by
rf0444
純粋関数型アルゴリズム入門
by
Kimikazu Kato
AtCoder Beginner Contest 011 解説
by
AtCoder Inc.
AtCoder Beginner Contest 008 解説
by
AtCoder Inc.
PFDS 5.5 Pairing heap
by
昌平 村山
U・N・C・O
by
tomerun
More from Dai Hamada
PDF
DP特集
by
Dai Hamada
PDF
修士論文発表資料
by
Dai Hamada
PDF
WUPC2nd C問題
by
Dai Hamada
PDF
WUPC2nd A問題
by
Dai Hamada
PDF
WUPC2nd I問題
by
Dai Hamada
PDF
WUPC2nd E問題
by
Dai Hamada
DP特集
by
Dai Hamada
修士論文発表資料
by
Dai Hamada
WUPC2nd C問題
by
Dai Hamada
WUPC2nd A問題
by
Dai Hamada
WUPC2nd I問題
by
Dai Hamada
WUPC2nd E問題
by
Dai Hamada
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