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
Submit search
EN
AI
Uploaded by
AtCoder Inc.
PDF, PPTX
4,861 views
AtCoder Regular Contest 027 解説
AtCoder Regular Contest 027 解説
Read more
0
Save
Share
Embed
Embed presentation
Download
Download as PDF, PPTX
1
/ 28
2
/ 28
3
/ 28
4
/ 28
5
/ 28
6
/ 28
7
/ 28
8
/ 28
9
/ 28
10
/ 28
11
/ 28
12
/ 28
13
/ 28
14
/ 28
15
/ 28
16
/ 28
17
/ 28
18
/ 28
19
/ 28
20
/ 28
21
/ 28
22
/ 28
23
/ 28
24
/ 28
25
/ 28
26
/ 28
27
/ 28
28
/ 28
More Related Content
PDF
AtCoder Regular Contest 017
by
AtCoder Inc.
PPTX
AtCoder Regular Contest 029 解説
by
AtCoder Inc.
PDF
AtCoder Regular Contest 024 解説
by
AtCoder Inc.
PDF
Arc041
by
AtCoder Inc.
PDF
AtCoder Regular Contest 036 解説
by
AtCoder Inc.
PDF
AtCoder Regular Contest 021 解説
by
AtCoder Inc.
PDF
abc027
by
AtCoder Inc.
PDF
AtCoder Regular Contest 025 解説
by
AtCoder Inc.
AtCoder Regular Contest 017
by
AtCoder Inc.
AtCoder Regular Contest 029 解説
by
AtCoder Inc.
AtCoder Regular Contest 024 解説
by
AtCoder Inc.
Arc041
by
AtCoder Inc.
AtCoder Regular Contest 036 解説
by
AtCoder Inc.
AtCoder Regular Contest 021 解説
by
AtCoder Inc.
abc027
by
AtCoder Inc.
AtCoder Regular Contest 025 解説
by
AtCoder Inc.
What's hot
PDF
AtCoder Beginner Contest 018 解説
by
AtCoder Inc.
PDF
AtCoder Beginner Contest 025 解説
by
AtCoder Inc.
PDF
AtCoder Regular Contest 046
by
AtCoder Inc.
PDF
AtCoder Beginner Contest 023 解説
by
AtCoder Inc.
PDF
AtCoder Regular Contest 019 解説
by
AtCoder Inc.
PDF
AtCoder Regular Contest 023 解説
by
AtCoder Inc.
PDF
Kth
by
oupc
PDF
AtCoder Beginner Contest 017 解説
by
AtCoder Inc.
PDF
arc047
by
AtCoder Inc.
PPTX
AtCoder Beginner Contest 014 解説
by
AtCoder Inc.
PDF
Za atsu-20170328
by
HCPC: 北海道大学競技プログラミングサークル
PDF
AtCoder Regular Contest 044 解説
by
AtCoder Inc.
PPTX
At coder regular contest 013 解説
by
光喜 濱屋
PDF
Aizu-2017: B
by
HCPC: 北海道大学競技プログラミングサークル
PPTX
Atcoder Regular Contest 014 解説
by
光喜 濱屋
PPTX
IJPC C解説
by
yutaka1999
PDF
CODE FESTIVAL 2015 予選B 解説
by
AtCoder Inc.
PDF
RUPC2016 day2 G
by
cocoa_chan
PPTX
Sengoku
by
Hirotaka Isa
PPTX
120419サブゼミ数学(2)
by
takemuralab
AtCoder Beginner Contest 018 解説
by
AtCoder Inc.
AtCoder Beginner Contest 025 解説
by
AtCoder Inc.
AtCoder Regular Contest 046
by
AtCoder Inc.
AtCoder Beginner Contest 023 解説
by
AtCoder Inc.
AtCoder Regular Contest 019 解説
by
AtCoder Inc.
AtCoder Regular Contest 023 解説
by
AtCoder Inc.
Kth
by
oupc
AtCoder Beginner Contest 017 解説
by
AtCoder Inc.
arc047
by
AtCoder Inc.
AtCoder Beginner Contest 014 解説
by
AtCoder Inc.
Za atsu-20170328
by
HCPC: 北海道大学競技プログラミングサークル
AtCoder Regular Contest 044 解説
by
AtCoder Inc.
At coder regular contest 013 解説
by
光喜 濱屋
Aizu-2017: B
by
HCPC: 北海道大学競技プログラミングサークル
Atcoder Regular Contest 014 解説
by
光喜 濱屋
IJPC C解説
by
yutaka1999
CODE FESTIVAL 2015 予選B 解説
by
AtCoder Inc.
RUPC2016 day2 G
by
cocoa_chan
Sengoku
by
Hirotaka Isa
120419サブゼミ数学(2)
by
takemuralab
Similar to AtCoder Regular Contest 027 解説
PDF
CODE THANKS FESTIVAL 2014 A日程 解説
by
AtCoder Inc.
PDF
130323 slide all
by
ikea0064
PPTX
CODE FESTIVAL 予選B 解説
by
AtCoder Inc.
PDF
AtCoder Regular Contest 043 解説
by
AtCoder Inc.
PDF
Donuts プロコンチャレンジ2014
by
kuno4n
PDF
Donutsプロコンチャレンジ 2015 解説
by
kuno4n
PDF
Together
by
tomerun
PDF
WUPC2012
by
Dai Hamada
PDF
AtCoder Regular Contest 034 解説
by
AtCoder Inc.
PDF
WUPC2nd I問題
by
Dai Hamada
PDF
AtCoder Beginner Contest 008 解説
by
AtCoder Inc.
PPTX
CODE FESTIVAL 2014 本選 解説
by
AtCoder Inc.
PDF
Sanpo
by
oupc
PDF
指数時間アルゴリズム入門
by
Yoichi Iwata
PDF
AtCoder Beginner Contest 024 解説
by
AtCoder Inc.
PDF
指数時間アルゴリズムの最先端
by
Yoichi Iwata
PDF
AtCoder Regular Contest 026 解説
by
AtCoder Inc.
PDF
Indeedなう B日程 解説
by
AtCoder Inc.
PDF
CODE THANKS FESTIVAL 2014 B日程 解説
by
AtCoder Inc.
PDF
AtCoder Beginner Contest 035 解説
by
AtCoder Inc.
CODE THANKS FESTIVAL 2014 A日程 解説
by
AtCoder Inc.
130323 slide all
by
ikea0064
CODE FESTIVAL 予選B 解説
by
AtCoder Inc.
AtCoder Regular Contest 043 解説
by
AtCoder Inc.
Donuts プロコンチャレンジ2014
by
kuno4n
Donutsプロコンチャレンジ 2015 解説
by
kuno4n
Together
by
tomerun
WUPC2012
by
Dai Hamada
AtCoder Regular Contest 034 解説
by
AtCoder Inc.
WUPC2nd I問題
by
Dai Hamada
AtCoder Beginner Contest 008 解説
by
AtCoder Inc.
CODE FESTIVAL 2014 本選 解説
by
AtCoder Inc.
Sanpo
by
oupc
指数時間アルゴリズム入門
by
Yoichi Iwata
AtCoder Beginner Contest 024 解説
by
AtCoder Inc.
指数時間アルゴリズムの最先端
by
Yoichi Iwata
AtCoder Regular Contest 026 解説
by
AtCoder Inc.
Indeedなう B日程 解説
by
AtCoder Inc.
CODE THANKS FESTIVAL 2014 B日程 解説
by
AtCoder Inc.
AtCoder Beginner Contest 035 解説
by
AtCoder Inc.
More from AtCoder Inc.
PPTX
TCO2017R1
by
AtCoder Inc.
PPTX
AtCoderに毎回参加したくなる仕組み
by
AtCoder Inc.
PDF
Square869120 contest #2
by
AtCoder Inc.
PDF
Disco Presents ディスカバリーチャンネルプログラミングコンテスト2016 本選 解説
by
AtCoder Inc.
PDF
Chokudai Contest 001
by
AtCoder Inc.
PDF
AtCoder Regular Contest 049 解説
by
AtCoder Inc.
PPTX
AtCoder Beginner Contest 034 解説
by
AtCoder Inc.
PDF
AtCoder Regular Contest 048
by
AtCoder Inc.
PDF
MUJINプログラミングチャレンジ2016 解説
by
AtCoder Inc.
PDF
AtCoder Beginner Contest 033 解説
by
AtCoder Inc.
PDF
DDPC 2016 予選 解説
by
AtCoder Inc.
PDF
abc032
by
AtCoder Inc.
PDF
CODE FESTIVAL 2015 沖縄ツアー 解説
by
AtCoder Inc.
PDF
abc031
by
AtCoder Inc.
PDF
CODE FESTIVAL 2015 解説
by
AtCoder Inc.
PDF
AtCoder Beginner Contest 030 解説
by
AtCoder Inc.
PDF
AtCoder Regular Contest 045 解説
by
AtCoder Inc.
PDF
CODE FESTIVAL 2015 予選A 解説
by
AtCoder Inc.
PDF
AtCoder Beginner Contest 029 解説
by
AtCoder Inc.
PDF
AtCoder Beginner Contest 028 解説
by
AtCoder Inc.
TCO2017R1
by
AtCoder Inc.
AtCoderに毎回参加したくなる仕組み
by
AtCoder Inc.
Square869120 contest #2
by
AtCoder Inc.
Disco Presents ディスカバリーチャンネルプログラミングコンテスト2016 本選 解説
by
AtCoder Inc.
Chokudai Contest 001
by
AtCoder Inc.
AtCoder Regular Contest 049 解説
by
AtCoder Inc.
AtCoder Beginner Contest 034 解説
by
AtCoder Inc.
AtCoder Regular Contest 048
by
AtCoder Inc.
MUJINプログラミングチャレンジ2016 解説
by
AtCoder Inc.
AtCoder Beginner Contest 033 解説
by
AtCoder Inc.
DDPC 2016 予選 解説
by
AtCoder Inc.
abc032
by
AtCoder Inc.
CODE FESTIVAL 2015 沖縄ツアー 解説
by
AtCoder Inc.
abc031
by
AtCoder Inc.
CODE FESTIVAL 2015 解説
by
AtCoder Inc.
AtCoder Beginner Contest 030 解説
by
AtCoder Inc.
AtCoder Regular Contest 045 解説
by
AtCoder Inc.
CODE FESTIVAL 2015 予選A 解説
by
AtCoder Inc.
AtCoder Beginner Contest 029 解説
by
AtCoder Inc.
AtCoder Beginner Contest 028 解説
by
AtCoder Inc.
AtCoder Regular Contest 027 解説
1.
AtCoder Regular Contest
027 解説 2014/8/2 1
2.
A 問題 –
門限
3.
問題概要 • 現在の時間 ℎ
と分 𝑚 が与えられる。 • 後何分で 18 時 0 分かを求める。 • 0 ≦ ℎ ≦ 17 , 0 ≦ 𝑚 ≦ 59 ※標準的な入出力については、ABC004 の解説等を参照してください。
4.
解法その 1 • 18
時まであと何時間何分かを求めて、その後分に変換する。 • 現在時刻が ℎ 時 𝑚 分なら、 ・ 𝑚 = 0 ⇒ あと 18 − ℎ 時間 ・ 𝑚 ≠ 0 ⇒ あと 17 − ℎ 時間と 60 − 𝑚 分 • 計算結果を 𝑎 時間 𝑏 分とすると、 a × 60 + 𝑏 分が答え。 • 最初に、現在時刻を 0 時ちょうどからの経過分数に変換して、1080 から引いても良い。
5.
解法その 2 • 現在時刻から、1
分後、2 分後、…と 1 分ずつ加算して、18 時ちょうど になるまでに合計何回足したかを数える。 • どちらの方針にするかは、実装時間やバグの入りやすさなどを考慮 して選択 (個人差あり)。
6.
B 問題 – 大事な数なのでZ
回書きまLた。
7.
問題概要 • 0 から
9 までと、大文字アルファベットのみで構成された長さ 𝑁 の文 字列が 2 個与えられる。 • 大文字アルファベットを 0 から 9 までの整数に変換する処理を行っ た結果、両者が表す整数が一致した。 • 一致した整数として全部で何通り考えられるかを求めよ。 • 1 ≦ 𝑁 ≦ 18
8.
部分点解法 • 答えとなる数字を全探索する。 • この場合、答えとして考えられないものは、 ・同じアルファベットに複数の数字が割り当てられている。 ・先頭に
0 が来ている。 となる場合なので、その場合を判定して、残ったものの総数が答えと なる。
9.
満点解法 • 部分点解法では、計算量が O(10
𝑁) となるので、𝑁が大きい場合に は時間が掛かり過ぎる。 • 一致しているという条件をうまく言い換えたい。 • ここでは、「グラフ」の概念を導入すると理解しやすくなる。 • それぞれの文字を頂点としたグラフを考える。 • 同じ数字でなければならない文字同士を辺で結ぶ。 • 同じ数字でなければならない文字同士というのは、同じ桁 (同じ位) にある文字同士のことである。(例えば、2 つの文字列がABCDとEFEH だった場合は、AE,BF,CE,DH 間に辺を結ぶ。)
10.
満点解法 • 数字と文字が同じ桁にある場合は、その文字に、「その数字でなければな らない」という条件を付加する。 • 最上位にある文字については、さらに「0以外」という条件も。 •
なお、この条件は衝突しない(衝突したら答えがなくなるため)。 • その後、各連結成分(辺同士で行き来できる頂点たち)について、 ・数字が割り当てられている⇒1 通り ・数字が割り当てられていない、かつ最上位⇒9 通り ・数字が割り当てられていない、かつ最上位でない⇒10 通り をそれぞれ掛け合わせると答え。
11.
例(入力例 3 –
PRBLMB と ARC027) • 文字を頂点としたグラフを考える。 P R A C B L M
12.
例(入力例 3 –
PRBLMB と ARC027) • 文字を頂点としたグラフを考える。 • 同じ数字になるもの同士を辺で結ぶ(PA,BC)。 P R A C B L M
13.
例(入力例 3 –
PRBLMB と ARC027) • 文字を頂点としたグラフを考える。 • 同じ数字になるもの同士を辺で結ぶ(PA,BC)。 • 文字と数字の割り当てを反映させる(L=0,M=2,B=7)。 P R A C B L M 0 27
14.
例(入力例 3 –
PRBLMB と ARC027) • 文字を頂点としたグラフを考える。 • 同じ数字になるもの同士を辺で結ぶ(PA,BC)。 • 文字と数字の割り当てを反映させる(L=0,M=2,B=7)。 • 最上位の情報も付ける。 P R A C B L M 0 27最上位
15.
例(入力例 3 –
PRBLMB と ARC027) • 文字を頂点としたグラフを考える。 • 同じ数字になるもの同士を辺で結ぶ(PA,BC)。 • 文字と数字の割り当てを反映させる(L=0,M=2,B=7)。 • 最上位の情報も付ける。 P R A C B L M 0 27最上位 9 通り × 10通り × 1 通り× 1 通り× 1 通り = 90 通り
16.
補足 • グラフの連結判定には、union-find を利用すると効率的
& 実装しや すい。 • サイズが小さいので探索をしても良いが、union-find を知っていると 色々と便利なので、ぜひとも覚えておこう! • 前回(ARC026)の解説にも載っているので、参考にしてください。 • http://www.slideshare.net/chokudai/arc026
17.
C 問題 – 最高のトッピングにしような
18.
問題概要 • スペシャルチケット 𝑋
枚と通常のチケット 𝑌 枚を持っている。 • 𝑁 個のトッピングがあり、トッピング 𝑖 は 𝑡𝑖 枚のチケット(うち 1 枚以 上はスペシャルチケット) と交換でき、嬉しさは ℎ𝑖 である。 • 同じトッピングは複数回入手できない。 • 嬉しさの合計値として最大なものを求めよ。 • 1 ≦ 𝑋 ≦ 300 , 0 ≦ 𝑌 ≦ 300, 1 ≦ 𝑁 ≦ 300 • 1 ≦ 𝑡𝑖 ≦ 600, 1 ≦ ℎ𝑖 ≦ 5,000,000
19.
部分点解法 • この問題はナップサック問題の一種。 • 動的計画法を用いると効率的に解答することができる。 •
dp[i][j][k] = (現在トッピング i まで処理しており、すでにスペシャルチ ケットを j 枚、通常のチケットを k 枚消費している場合での嬉しさの 合計値の最大値) とすると、 dp[i][j][k] = max{dp[i-1][j][k] , dp[i-1][j-m][k- t_i +m] + h_i (1 ≦ m ≦ t_i)} (細かい境界条件は割愛) • O(𝑋𝑌𝑁(𝑋 + 𝑌)) となる。
20.
満点解法 • 先ほどの場合、交換可能なすべての組み合わせを試していたが、出 来る限りスペシャルチケットの消費数を抑えられるものを選んだほう がいいのでは? • 実際、消費枚数が最も少ない
(m が最小) となるもののみを考慮して も最適解を得られる。 • 実はこの問題は、「チケットを 𝑋 + 𝑌 枚持っており、トッピングは最大 𝑋 個しか選べない場合の最大化」と同じ問題。 • dp[i][j][k] = (現在トッピング i まで処理しており、トッピングを j 個採用 しており、チケットを k 枚消費している場合での嬉しさの合計値の最 大値) とおく動的計画法なら O(𝑋𝑁(𝑋 + 𝑌)) となる。
21.
D 問題 – ぴょんぴょんトレーニング
22.
問題概要 • 𝑁 個の石があり、石
𝑖 からは ℎ𝑖 個先まで跳べる。 • 石 𝑠𝑖 から石 𝑡𝑖 までジャンプで移動する組み合わせが何個あるか、と いうクエリを 𝐷 個解け。 • 同じトッピングは複数回入手できない。 • 嬉しさの合計値として最大なものを求めよ。 • 1 ≦ 𝑁 ≦ 300,000 , 1 ≦ 𝐷 ≦ 5,000, 1 ≦ ℎ𝑖 ≦ 10 • 1 ≦ 𝑠𝑖 <𝑡𝑖 ≦ 𝑁
23.
部分点解法 • この問題も動的計画法によって計算できる。 • dp[i]=(石
i までの行き方) とおくと、 dp[i] = (dp[i − j] ∗ 𝑓(i − j, i)10 j=1 ) ここで、𝑓 𝑥, 𝑦 は𝑥 + ℎ 𝑥 ≧ 𝑦なら 1 、そうでないなら 0 を取る関数とす る。 • 手前 10 項 (dp[i-1],dp[i-2],…,dp[i-10])を覚えておけば良い。 • 毎回 O(𝑁) で計算すれば O(𝑁𝐷) となる。
24.
満点解法 • 毎回計算する際に、同じ部分を何回も使用していることに気がつく。 • 同じ部分を「平方分割」によって処理することを考える。 •
手前 10 項を覚えておけば次の項を計算することができることを利用 する。 • func(s,t,dp[s-1],dp[s-2],…,dp[s-10]) = dp[t],dp[t-1], … , dp[t-9] のそれ ぞれの値を、dp[s-1], dp[s-2], … , dp[s-10] を用いて変換する関数。 • func の返り値は 10 個ある。
25.
どゆこと? • 例として dp[99]
の値を知りたいときに、 dp[20],dp[19],dp[18], … ,dp[11] の値さえわかっていれば、 dp[99]=c(20,99,21) * dp[20] + c(19,99,21) * dp[19] + … + c(11,99,21) * dp[11] と表記できる。 ここで、c(x,y,z)=(x から y まで移動するものの中で、最初のジャンプで z 以上の石に移動するものの総数) となる。 • dp[98] から dp[90] までについても同様に計算すれば func(21,99, ,dp[20],dp[19],...,dp[11]) の完成となる。
26.
func の計算について • c
(s,t,u)は部分点解法と同じ方針で O(t-s) で計算できる。 • 「1 回目のジャンプで u 以上に移動する組み合わせ」としなければな らないことに注意 (同じジャンプ重複して数えてしまう)。 • c (s,t,u) は、各 func に対して最大 100 種類計算すれば OK。 • func の計算は、1 つの func につき O( 𝑁) (100* 𝑁) となる。
27.
満点解法 • func(𝑘 𝑁,
(𝑘 + 1) 𝑁) (0 ≦ 𝑘 ≦ 𝑁) を計算しておき、各トレーニン グについて、𝑠𝑖 から 𝑁 の倍数になるまで部分点解法と同じ DP(1)→func で 𝑁 個ずつ飛ばせるだけ飛ばす(2)→ 𝑡𝑖になるまで部 分点解法と同じDP(3) • func の計算は、1 つの func につき O( 𝑁) なので、全体で O(𝑁) とな る。 • この方針でfunc を求めた後は O(𝐷 𝑁) となる。 𝑠𝑖 𝑡𝑖𝑝 𝑁 (𝑝 + 1) 𝑁 𝑞 𝑁 (1) (3) (2)(2) (2)(2) (中略) …
28.
補足 • func は
10 × 10 行列として表現できる。 • (𝑛 × 𝑛行列)* (𝑛 × 𝑛行列)*…* (𝑛 × 𝑛行列)* (𝑛 要素ベクトル) の計算 において、* の個数を 𝑚 とする。このとき、 ・* を左から処理→行列*行列=行列を繰り返し、O(𝑛3 𝑚) ・* を右から処理→行列*ベクトル=ベクトルを繰り返し、O(𝑛2 𝑚) となり、この問題でも速度に 10 倍もの差が出る。このため、ベクトル を利用した計算をしたほうが速くなる。func を利用した計算の際には 注意。
Download