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
7,577 views
arc047
AtCoder Regular Contest 047 解説
Education
◦
Read more
1
Save
Share
Embed
Embed presentation
Download
Download as PDF, PPTX
1
/ 67
2
/ 67
3
/ 67
4
/ 67
5
/ 67
6
/ 67
7
/ 67
8
/ 67
9
/ 67
10
/ 67
11
/ 67
12
/ 67
13
/ 67
14
/ 67
15
/ 67
Most read
16
/ 67
Most read
17
/ 67
18
/ 67
19
/ 67
20
/ 67
Most read
21
/ 67
22
/ 67
23
/ 67
24
/ 67
25
/ 67
26
/ 67
27
/ 67
28
/ 67
29
/ 67
30
/ 67
31
/ 67
32
/ 67
33
/ 67
34
/ 67
35
/ 67
36
/ 67
37
/ 67
38
/ 67
39
/ 67
40
/ 67
41
/ 67
42
/ 67
43
/ 67
44
/ 67
45
/ 67
46
/ 67
47
/ 67
48
/ 67
49
/ 67
50
/ 67
51
/ 67
52
/ 67
53
/ 67
54
/ 67
55
/ 67
56
/ 67
57
/ 67
58
/ 67
59
/ 67
60
/ 67
61
/ 67
62
/ 67
63
/ 67
64
/ 67
65
/ 67
66
/ 67
67
/ 67
More Related Content
PPTX
CODE FESTIVAL 2014 本選 解説
by
AtCoder Inc.
PDF
AtCoder Regular Contest 021 解説
by
AtCoder Inc.
PDF
AtCoder Regular Contest 039 解説
by
AtCoder Inc.
PDF
AtCoder Beginner Contest 033 解説
by
AtCoder Inc.
PDF
AtCoder Regular Contest 030 解説
by
AtCoder Inc.
PDF
最小カットを使って「燃やす埋める問題」を解く
by
shindannin
PDF
指数時間アルゴリズム入門
by
Yoichi Iwata
PDF
Indeedなう 予選A 解説
by
AtCoder Inc.
CODE FESTIVAL 2014 本選 解説
by
AtCoder Inc.
AtCoder Regular Contest 021 解説
by
AtCoder Inc.
AtCoder Regular Contest 039 解説
by
AtCoder Inc.
AtCoder Beginner Contest 033 解説
by
AtCoder Inc.
AtCoder Regular Contest 030 解説
by
AtCoder Inc.
最小カットを使って「燃やす埋める問題」を解く
by
shindannin
指数時間アルゴリズム入門
by
Yoichi Iwata
Indeedなう 予選A 解説
by
AtCoder Inc.
What's hot
PDF
AtCoder Beginner Contest 035 解説
by
AtCoder Inc.
PDF
AtCoder Beginner Contest 025 解説
by
AtCoder Inc.
PPTX
AtCoder Beginner Contest 034 解説
by
AtCoder Inc.
PDF
AtCoder Beginner Contest 020 解説
by
AtCoder Inc.
PPTX
AtCoder Beginner Contest 012 解説
by
AtCoder Inc.
PDF
AtCoder Beginner Contest 022 解説
by
AtCoder Inc.
PDF
AtCoder Beginner Contest 013 解説
by
AtCoder Inc.
PDF
AtCoder Beginner Contest 024 解説
by
AtCoder Inc.
PDF
abc027
by
AtCoder Inc.
PDF
AtCoder Regular Contest 032 解説
by
AtCoder Inc.
PDF
AtCoder Regular Contest 035 解説
by
AtCoder Inc.
PDF
AtCoder Regular Contest 037 解説
by
AtCoder Inc.
PDF
AtCoder Beginner Contest 026 解説
by
AtCoder Inc.
PDF
全域木いろいろ
by
HCPC: 北海道大学競技プログラミングサークル
PDF
AtCoder Regular Contest 045 解説
by
AtCoder Inc.
PDF
双対性
by
Yoichi Iwata
PDF
Code Formula 2014 予選A 解説
by
AtCoder Inc.
PDF
AtCoder Beginner Contest 021 解説
by
AtCoder Inc.
PDF
AtCoder Regular Contest 042 解説
by
AtCoder Inc.
PDF
AtCoder Beginner Contest 017 解説
by
AtCoder Inc.
AtCoder Beginner Contest 035 解説
by
AtCoder Inc.
AtCoder Beginner Contest 025 解説
by
AtCoder Inc.
AtCoder Beginner Contest 034 解説
by
AtCoder Inc.
AtCoder Beginner Contest 020 解説
by
AtCoder Inc.
AtCoder Beginner Contest 012 解説
by
AtCoder Inc.
AtCoder Beginner Contest 022 解説
by
AtCoder Inc.
AtCoder Beginner Contest 013 解説
by
AtCoder Inc.
AtCoder Beginner Contest 024 解説
by
AtCoder Inc.
abc027
by
AtCoder Inc.
AtCoder Regular Contest 032 解説
by
AtCoder Inc.
AtCoder Regular Contest 035 解説
by
AtCoder Inc.
AtCoder Regular Contest 037 解説
by
AtCoder Inc.
AtCoder Beginner Contest 026 解説
by
AtCoder Inc.
全域木いろいろ
by
HCPC: 北海道大学競技プログラミングサークル
AtCoder Regular Contest 045 解説
by
AtCoder Inc.
双対性
by
Yoichi Iwata
Code Formula 2014 予選A 解説
by
AtCoder Inc.
AtCoder Beginner Contest 021 解説
by
AtCoder Inc.
AtCoder Regular Contest 042 解説
by
AtCoder Inc.
AtCoder Beginner Contest 017 解説
by
AtCoder Inc.
Viewers also liked
PDF
プログラミングコンテストでのデータ構造 2 ~平衡二分探索木編~
by
Takuya Akiba
PDF
AtCoder Regular Contest 043 解説
by
AtCoder Inc.
PDF
AtCoder Beginner Contest 018 解説
by
AtCoder Inc.
PDF
AtCoder Regular Contest 048
by
AtCoder Inc.
PDF
AtCoder Beginner Contest 008 解説
by
AtCoder Inc.
PDF
CODE FESTIVAL 2015 解説
by
AtCoder Inc.
PPTX
AtCoderに毎回参加したくなる仕組み
by
AtCoder Inc.
PPTX
ABC001 解説
by
AtCoder Inc.
PDF
Square869120 contest #2
by
AtCoder Inc.
PPTX
Atcoder Regular Contest 014 解説
by
光喜 濱屋
PPTX
AtCoderで始めるテスト駆動開発
by
YujiSoftware
PDF
شهادة جامعة دمشق
by
Mohammad Shammout
PDF
Disco Presents ディスカバリーチャンネルプログラミングコンテスト2016 本選 解説
by
AtCoder Inc.
PDF
abc032
by
AtCoder Inc.
PDF
AtCoder Beginner Contest 005 解説
by
AtCoder Inc.
PDF
MUJINプログラミングチャレンジ2016 解説
by
AtCoder Inc.
PDF
Casa Duplex
by
Consultor Imobiliário
ODP
Balonmán touro
by
davidares1
PPTX
Youth Participation - learned lessons from Sensoa's history
by
Elizabeth Verhetsel
PPT
Маркетинг 2015 - основни правила за малкия и среден бизнес
by
Justine Toms
プログラミングコンテストでのデータ構造 2 ~平衡二分探索木編~
by
Takuya Akiba
AtCoder Regular Contest 043 解説
by
AtCoder Inc.
AtCoder Beginner Contest 018 解説
by
AtCoder Inc.
AtCoder Regular Contest 048
by
AtCoder Inc.
AtCoder Beginner Contest 008 解説
by
AtCoder Inc.
CODE FESTIVAL 2015 解説
by
AtCoder Inc.
AtCoderに毎回参加したくなる仕組み
by
AtCoder Inc.
ABC001 解説
by
AtCoder Inc.
Square869120 contest #2
by
AtCoder Inc.
Atcoder Regular Contest 014 解説
by
光喜 濱屋
AtCoderで始めるテスト駆動開発
by
YujiSoftware
شهادة جامعة دمشق
by
Mohammad Shammout
Disco Presents ディスカバリーチャンネルプログラミングコンテスト2016 本選 解説
by
AtCoder Inc.
abc032
by
AtCoder Inc.
AtCoder Beginner Contest 005 解説
by
AtCoder Inc.
MUJINプログラミングチャレンジ2016 解説
by
AtCoder Inc.
Casa Duplex
by
Consultor Imobiliário
Balonmán touro
by
davidares1
Youth Participation - learned lessons from Sensoa's history
by
Elizabeth Verhetsel
Маркетинг 2015 - основни правила за малкия и среден бизнес
by
Justine Toms
Similar to arc047
PDF
AtCoder Beginner Contest 015 解説
by
AtCoder Inc.
PDF
AtCoder Regular Contest 023 解説
by
AtCoder Inc.
PDF
AtCoder Regular Contest 031 解説
by
AtCoder Inc.
PDF
AtCoder Beginner Contest 010 解説
by
AtCoder Inc.
PDF
Code Formula 予選B 解説
by
AtCoder Inc.
PPTX
AtCoder167Dをダブリングで解く
by
Akira KANAI
PDF
実践・最強最速のアルゴリズム勉強会 第五回講義資料(ワークスアプリケーションズ & AtCoder)
by
AtCoder Inc.
PDF
Donutsプロコンチャレンジ 2015 解説
by
kuno4n
PDF
Vinculum
by
tomerun
PDF
AtCoder Regular Contest 017
by
AtCoder Inc.
PDF
CODE THANKS FESTIVAL 2014 A日程 解説
by
AtCoder Inc.
PDF
AtCoder Regular Contest 027 解説
by
AtCoder Inc.
PDF
Arc041
by
AtCoder Inc.
PDF
AtCoder Regular Contest 024 解説
by
AtCoder Inc.
PDF
姫路 IT 系勉強会 Vol.6 プログラミングコンテストという名のオンラインゲームがあるらしい
by
Kazkuki Oakamoto
PDF
AtCoder Regular Contest 036 解説
by
AtCoder Inc.
PDF
HAPPY NEW YEAR 2017 コンテスト 解説
by
皓介 三田
PDF
UTPC2012 - K
by
omeometo
PDF
AtCoder Regular Contest 026 解説
by
AtCoder Inc.
PPTX
AtCoder Regular Contest 029 解説
by
AtCoder Inc.
AtCoder Beginner Contest 015 解説
by
AtCoder Inc.
AtCoder Regular Contest 023 解説
by
AtCoder Inc.
AtCoder Regular Contest 031 解説
by
AtCoder Inc.
AtCoder Beginner Contest 010 解説
by
AtCoder Inc.
Code Formula 予選B 解説
by
AtCoder Inc.
AtCoder167Dをダブリングで解く
by
Akira KANAI
実践・最強最速のアルゴリズム勉強会 第五回講義資料(ワークスアプリケーションズ & AtCoder)
by
AtCoder Inc.
Donutsプロコンチャレンジ 2015 解説
by
kuno4n
Vinculum
by
tomerun
AtCoder Regular Contest 017
by
AtCoder Inc.
CODE THANKS FESTIVAL 2014 A日程 解説
by
AtCoder Inc.
AtCoder Regular Contest 027 解説
by
AtCoder Inc.
Arc041
by
AtCoder Inc.
AtCoder Regular Contest 024 解説
by
AtCoder Inc.
姫路 IT 系勉強会 Vol.6 プログラミングコンテストという名のオンラインゲームがあるらしい
by
Kazkuki Oakamoto
AtCoder Regular Contest 036 解説
by
AtCoder Inc.
HAPPY NEW YEAR 2017 コンテスト 解説
by
皓介 三田
UTPC2012 - K
by
omeometo
AtCoder Regular Contest 026 解説
by
AtCoder Inc.
AtCoder Regular Contest 029 解説
by
AtCoder Inc.
More from AtCoder Inc.
PDF
AtCoder Regular Contest 049 解説
by
AtCoder Inc.
PDF
CODE FESTIVAL 2015 予選A 解説
by
AtCoder Inc.
PDF
abc031
by
AtCoder Inc.
PDF
AtCoder Beginner Contest 028 解説
by
AtCoder Inc.
PDF
AtCoder Beginner Contest 030 解説
by
AtCoder Inc.
PDF
AtCoder Beginner Contest 029 解説
by
AtCoder Inc.
PDF
Chokudai Contest 001
by
AtCoder Inc.
PDF
天下一プログラマーコンテスト2015 予選A E問題 解説
by
AtCoder Inc.
PDF
天下一プログラマーコンテスト2015 予選B 解説
by
AtCoder Inc.
PDF
AtCoder Regular Contest 044 解説
by
AtCoder Inc.
PDF
DDPC 2016 予選 解説
by
AtCoder Inc.
PDF
AtCoder Regular Contest 046
by
AtCoder Inc.
PDF
CODE FESTIVAL 2015 予選B 解説
by
AtCoder Inc.
PDF
CODE FESTIVAL 2015 沖縄ツアー 解説
by
AtCoder Inc.
PPTX
TCO2017R1
by
AtCoder Inc.
AtCoder Regular Contest 049 解説
by
AtCoder Inc.
CODE FESTIVAL 2015 予選A 解説
by
AtCoder Inc.
abc031
by
AtCoder Inc.
AtCoder Beginner Contest 028 解説
by
AtCoder Inc.
AtCoder Beginner Contest 030 解説
by
AtCoder Inc.
AtCoder Beginner Contest 029 解説
by
AtCoder Inc.
Chokudai Contest 001
by
AtCoder Inc.
天下一プログラマーコンテスト2015 予選A E問題 解説
by
AtCoder Inc.
天下一プログラマーコンテスト2015 予選B 解説
by
AtCoder Inc.
AtCoder Regular Contest 044 解説
by
AtCoder Inc.
DDPC 2016 予選 解説
by
AtCoder Inc.
AtCoder Regular Contest 046
by
AtCoder Inc.
CODE FESTIVAL 2015 予選B 解説
by
AtCoder Inc.
CODE FESTIVAL 2015 沖縄ツアー 解説
by
AtCoder Inc.
TCO2017R1
by
AtCoder Inc.
arc047
1.
ARC047解説 A:タブの開きすぎ
2.
A-問題概要 ● L個以上タブを開くとクラッシュして、タブが1 個に減ってしまうブラウザがある ● 初めタブは1個だとして、そのあとの「タブを 開く」「タブを閉じる」の履歴が与えられるの で、クラッシュの回数をもとめよ。
3.
A-考察 ● タブの個数以外気にしなくて良い。
4.
A-解法 ● タブの個数を変数で管理しておく。
5.
A-解法 ● タブの個数を変数で管理しておく。 ● タブを閉じるとき –
変数の値を1減らす
6.
A-解法 ● タブの個数を変数で管理しておく。 ● タブを閉じるとき –
変数の値を1減らす ● タブを開くとき – タブの個数がL個未満ならば、変数の値を1増やす
7.
A-解法 ● タブの個数を変数で管理しておく。 ● タブを閉じるとき –
変数の値を1減らす ● タブを開くとき – タブの個数がL個未満ならば、変数の値を1増やす – タブの個数がL個ならば変数の値を1にして、ク ラッシュの回数を1増やす
8.
ARC047解説 B:同一円周上
9.
B-問題概要 ● 格子点上の点が N
個与えられる。 ● 全ての点からのマンハッタン距離が等しい格子 点上の点Pを1つもとめよ ● N ≦ 10^5 ● -10^9 ≦ 座標の値 ≦ 10^9
10.
B-考察 ● ある点からマンハッタン距離が等しい点の集合 はどのようなものか?
11.
B-考察 ● ある点からマンハッタン距離が等しい点の集合 はどのようなものか? 点P
12.
B-考察 ● ある点からマンハッタン距離が等しい点の集合 はどのようなものか? 点Pからマンハッタン距離3の点
13.
B-考察 ● ある点からマンハッタン距離が等しい点の集合 はどのようなものか? →45度傾いた正方形の外周になる
14.
B-考察 ● ある点からマンハッタン距離が等しい点の集合 はどのようなものか? →45度傾いた正方形の外周になる ● この正方形の大きさがわかれば、点Pのおおよ その見当がつく。
15.
B-45度傾ける ● 45度傾いた状態で扱うのはわかりづらいの で、もとに戻すために、X,YではなくX+Y,X-Y で各点を表してみる。 ● すると軸に平行な正方形がでてくる。 →
16.
B-考察 ● (回転後の)X座標の最大値と最小値の差、と (回転後の)Y座標の最大値と最小値の差のう ち大きい方が、正方形の1辺の長さと一致す る。
17.
B-確認 ● 4辺の内全ての辺から1つ以上残っている場合 – Xの最大値と最小値の差も、Yの最大値と最小値の 差も一辺の長さと一致する。
18.
B-確認 ● 4辺の内3つの辺から1つ以上残っている場合 – Xの最大値と最小値の差か、Yの最大値と最小値の 差の大きい方が一辺の長さと一致する。
19.
B-確認 ● 4辺のうち向かい合う2辺について1つ以上残っ ている場合 – Xの最大値と最小値の差か、Yの最大値と最小値の 差の大きい方が一辺の長さと一致する。
20.
B-確認 ● 4辺のうちとなりあう2辺について1つ以上残っ ている場合 – Xの最大値と最小値の差か、Yの最大値と最小値の 差の大きい方が一辺の長さと一致しない???
21.
B-確認 ● 4辺のうちとなりあう2辺について1つ以上残っ ている場合 – Xの最大値と最小値の差か、Yの最大値と最小値の 差の大きい方が一辺の長さと一致する点Pがある。
22.
B-考察 ● 1辺の長さについては、X座標の最大値と最小 値の差とY座標の最大値と最小値の差をみて、 大きい方をとればよい。 ● 1辺の長さをDとする。与えられたX座標、最 大最小をXmax,Xminで表し、点PのX座標、Y座 標をPx,Pyとすると Xmax-Px,
Px -XminのいずれかがD/2と一致す る。 – Y座標も同様 ● よってDの値と全体のX座標、Y座標の最大最小 から点Pの候補が有限個に決まる
23.
B-考察 ● さきほどの考察は45度回転した後の世界での 計算である。 ● 回転後のXやYの値は、回転前のX+YやX-Yの値 と対応するので、実装するときはその値でプロ グラムを組まなければならない。
24.
B-解法 ● 与えられた点について(X+Y)の最大値と最小値 の差、(X-Y)座標の最大値と最小値の差を求 め、大きい方をDとする ● 先ほどの考察を使ってPx,Pyの値を有限個にし ぼりこむ ●
そのうちすべての点とのマンハッタン距離が等 しい点を挙げれば良い
25.
ARC047解説 C:N!÷K番目の単語
26.
C-問題概要 ● [1,2,..,N]を並び替えたものを「単語」という ● 単語のうち辞書順で小さい方から
N! / K番目 (1-index)のものを求めよ ● K ≦ N ≦ 10^5
27.
C-考察1 ● 単語の中で辞書順X番目(0-index)のものを求め るにはどうすればいいか?
28.
C-考察1 ● 単語の中で辞書順X番目(0-index)のものを求め るにはどうすればいいか? → 1文字目から順番に決めていけば良い
29.
C-X番目の求め方 ● 1文字目が1であるような単語はいくつある か? – 2文字目以降の並びを考えると(N-1)!通り ●
1文字目が2であるような単語はいくつある か? – 同様に(N-1)!通り ● X番目の単語の1文字目は何か? – 上の考察より、[X / (N-1)!] + 1 – []はガウス記号
30.
C-X番目の求め方 ● 1文字目が求まった!→Aとする ● つぎにもとめるべきものは? [1,2,...,
A-1, A+1,...N]を並び替えたものの中で X % (N-1)!番目の物 ● さきほどと同様の計算で求めることが出来る。 ● 順番に繰り返せばすべての桁の値が決まる。 ● 以降は[X / (N-1)!] + 1ではなくて[X / (N-1)!] + 1番目に小さい値であることに注意
31.
C-部分点 ● いまのような計算方法でN!/K番目の値をもとめ る。 ● N
≦ 20なのでN!/Kは64bit整数に収まるので、 様々な言語で扱える。
32.
C-考察2 ● Nが大きいと N!/Kを陽に持つことは出来な い。
33.
C-考察2 ● Nが大きいと N!/Kを陽に持つことは出来な い。 ●
やりたい操作は – (N-1)!で割る – その余りを求める
34.
C-考察2 ● Nが大きいと N!/Kを陽に持つことは出来な い。 ●
やりたい操作は – (N-1)!で割る – その余りを求める 実際にやってみる
35.
C-考察2 ● N!/Kを(N-1)!で割った商は – (N/K)×(N-1)!
÷ (N-1)! の商 – → N÷K の商 ● N!/Kを(N-1)!で割ったあまりは – (N/K)×(N-1)! ÷ (N-1)! のあまり – → 「N÷Kのあまり」÷ K × (N-1)! – これは 整数÷K×(N-1)! の形をしている
36.
C-考察2 ● このあと2桁目を求めるときに – 整数÷K×(N-1)!
を (N-2)!で割った商と余り を求めることになる。商は先ほど同様に簡単に 求めることができ、あまりは – 整数÷K×(N-2)! になる。
37.
C-考察2まとめ ● 1桁目を求めるときに扱う値が 1÷K×N! ●
2桁目を求めるときに扱う値が 整数÷K×(N-1)! ● 3桁目を求めるときに扱う値が 整数÷K×(N-2)! ● 4桁目を求めるときに扱う値が 整数÷K×(N-3)! :
38.
C-考察2まとめ ● 1桁目を求めるときに扱う値が 1÷K×N! ●
2桁目を求めるときに扱う値が 整数÷K×(N-1)! ● 3桁目を求めるときに扱う値が 整数÷K×(N-2)! ● 4桁目を求めるときに扱う値が 整数÷K×(N-3)! :
39.
C-考察2まとめ ● 1桁目を求めるときに扱う値が 1÷K×N! ●
2桁目を求めるときに扱う値が 整数÷K×(N-1)! ● 3桁目を求めるときに扱う値が 整数÷K×(N-2)! ● 4桁目を求めるときに扱う値が 整数÷K×(N-3)! : 赤字の整数だけ保存しておくだけで済む
40.
C-解法 ● 部分点1と同じ解法を、N!/Kを陽に持たずに計 算する。 ● 保存しておく整数はあまり大きくならないこと が保証される。 –
考察すると 整数÷K ≦ N となることがわかる ● 残っている数字の中でX番目に小さいものをも とめる作業はBIT上の二分探索で実装できる →計算量O(Nlog^2N) 満点獲得
41.
ARC047解説 D:ナナメクエリ
42.
D-問題概要 ● 全てのマスが0に初期化されたN×Nの方眼紙上 で以下のクエリをQ個処理せよ。 ● 1:A≦
X+Y ≦ Bとなるマス(X,Y)にCを足す ● 2:A≦ X-Y ≦ Bとなるマス(X,Y)にCを足す ● 3:A≦X≦ B,C≦Y≦Dとなるマス(X,Y)の範囲内の 最大値とその個数を求める ● N,Q≦5,000
43.
D-部分点解法 ● N ≦
50 ● 指示通りシミュレートする ● 一度のクエリで参照する必要のマスは最大で 2500個程度 ● 充分少ないので間に合う ● O(N^2Q)10点獲得
44.
D-考察 ● sum[i] :=
「X+Y=iとなるマス(X,Y)にクエリ1で 足された値の総和」 ● dif[i] := 「X-Y=iとなるマス(X,Y)にクエリ2で足 された値の総和」 という2つの変数を用意する。 ● sum[X+Y]とdif[X-Y]がわかればマス(X,Y)の値も すぐわかる。
45.
D-考察 ● sum[X+Y]とdif[X-Y]がわかればマス(X,Y)の値も すぐわかる ● クエリ1とクエリ2はO(N)で処理できる ●
問題はクエリ3
46.
D-考察 ● クエリ3の範囲のなかでとりうるX-Yの値は連 続している。 ● 右図のような範囲の場合 X-Yは-3~2の値を取る
47.
D-考察 ● X-Yの値を決めてやると、X+Yの値の範囲も決 まり、1個飛ばしの値をとる。 ● X-Y
= -1とする X+Yは1~5の奇数をとる
48.
D-考察 ● X-Yを決めた時に、その中で最大の値を持つマ スは、適切な範囲のsumの最大値 +
dif[X-Y]と なる。 ● X-Y=-1ならば max{sum[1],sum[3], sum[5]} +dif[-1] が右線上の最大値である
49.
D-偶奇でわける ● さきほどの考察で、X-Yを固定した時のX+Yの 取りうる値の範囲が連続だったら、bitやセグ メントツリーをつかってO(logN)で最大値を求 めることが出来る。 ● X+Yの範囲は連続ではないものの2飛ばしであ るため、2つセグメントツリーを作ってX+Yが 奇数のものと偶数のものを分けて管理すれば、 きっちり連続した区間になってくれる。
50.
D-部分点2まとめ ● sum[i]やdif[i]を使ってマスの値を保存する ● クエリ1,2は愚直にO(N)でsumやdifを更新 ●
クエリ3の時はdif[X-Y]を全通り試して、各X-Y に対して対応するX+Yに値の範囲をもとめ、セ グメントツリーで最大値とその個数をもとめ る。 ● O(NlogNQ) 30点獲得
51.
D-考察 ● クエリの範囲が正方形である時を考える ● 偶奇は別々に考えていいので今回は奇数だけ考 える ●
部分点2で注目したX+Yの範囲をよく見てみる
52.
D-考察 ● X-Y =
-3のときX+Yの範囲は[3]
53.
D-考察 ● X-Y =
-3のときX+Yの範囲は[3] ● X-Y = -1のときX+Yの範囲は[1,3,5]
54.
D-考察 ● X-Y =
-3のときX+Yの範囲は[3] ● X-Y = -1のときX+Yの範囲は[1,3,5] ● X-Y = 1のときX+Yの範囲は[1,3,5]
55.
D-考察 ● X-Y =
-3のときX+Yの範囲は[3] ● X-Y = -1のときX+Yの範囲は[1,3,5] ● X-Y = 1のときX+Yの範囲は[1,3,5] ● X-Y = 3のときX+Yの範囲は[3]
56.
D-観察 ● 出てきた範囲の種類は – [3] –
[1,3,5] ● これを8×8で実験した場合だと – [7] – [5,7,9] – [3,5,7,9,11] – [1,3,5,7,9,11,13] となる
57.
D-考察 ● 良い順番で処理するとX+Yの範囲は増えるだけ になる。 – 値が増えるだけならセグメントツリーをつかわなく ても随時maxをとるだけで最大値がわかる ●
正方形のクエリならば一辺の長さに対する線形 時間で処理することが出来る。
58.
D-考察 ● クエリの範囲が長方形の時は? – 正方形に分割してやれば良い。
59.
D-考察 ● クエリの範囲が長方形の時は? – 正方形に分割してやれば良い。 ●
どうやって分割する? – ユークリッドの互助法の要領でできるだけ大きい正 方形を削り取るように分割していく
60.
D-考察 ● 例
61.
D-考察 ● 例
62.
D-考察 ● 例
63.
D-考察 ● 例
64.
D-考察 ● 例
65.
D-計算量 ● 1辺がXの正方形のクエリを処理するのにO(X) の時間がかかる ● タテとヨコの和がSの長方形から先ほどの方法 で1辺がXの正方形を剥ぎとった時、のこる長 方形のタテとヨコの和はS-X以下になる ●
よって、全て正方形に分割し終えたときの総計 算量はO(S)=O(N)となり無事に線形時間で処 理が終わる。
66.
D-満点まとめ ● 部分点2同様にsumとdifを作る。 ● 正方形のクエリならば線形時間で解ける。 ●
長方形のクエリでも正方形に分割すると線形時 間でとける。 ● O(NQ) 満点
67.
D-満点別解(紹介のみ) ● 部分点2でセグメントツリーを使うかわりにス ライド最小和を使うことで、logを一つ取るこ とが出来る。 ● hashmap(sortされていない代わりにアクセス が定数時間であるmap)を使えば最大値の個数 を数えるのが線形時間でできるようになる
Download