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.
17,400 views
AtCoder Beginner Contest 023 解説
AtCoder Beginner Contest 023 解説
Education
◦
Read more
2
Save
Share
Embed
Embed presentation
Download
Downloaded 46 times
1
/ 26
2
/ 26
3
/ 26
4
/ 26
5
/ 26
6
/ 26
7
/ 26
8
/ 26
9
/ 26
10
/ 26
11
/ 26
12
/ 26
13
/ 26
14
/ 26
15
/ 26
16
/ 26
17
/ 26
18
/ 26
19
/ 26
20
/ 26
21
/ 26
22
/ 26
23
/ 26
24
/ 26
25
/ 26
26
/ 26
More Related Content
PDF
abc027
by
AtCoder Inc.
PDF
AtCoder Beginner Contest 035 解説
by
AtCoder Inc.
PDF
AtCoder Beginner Contest 022 解説
by
AtCoder Inc.
PDF
AtCoder Regular Contest 037 解説
by
AtCoder Inc.
PDF
AtCoder Beginner Contest 021 解説
by
AtCoder Inc.
PDF
AtCoder Beginner Contest 025 解説
by
AtCoder Inc.
PDF
AtCoder Beginner Contest 010 解説
by
AtCoder Inc.
PDF
AtCoder Beginner Contest 028 解説
by
AtCoder Inc.
abc027
by
AtCoder Inc.
AtCoder Beginner Contest 035 解説
by
AtCoder Inc.
AtCoder Beginner Contest 022 解説
by
AtCoder Inc.
AtCoder Regular Contest 037 解説
by
AtCoder Inc.
AtCoder Beginner Contest 021 解説
by
AtCoder Inc.
AtCoder Beginner Contest 025 解説
by
AtCoder Inc.
AtCoder Beginner Contest 010 解説
by
AtCoder Inc.
AtCoder Beginner Contest 028 解説
by
AtCoder Inc.
What's hot
PPTX
AtCoder Beginner Contest 034 解説
by
AtCoder Inc.
PDF
abc031
by
AtCoder Inc.
PDF
指数時間アルゴリズム入門
by
Yoichi Iwata
PPTX
AtCoder Beginner Contest 002 解説
by
AtCoder Inc.
PDF
ウェーブレット木の世界
by
Preferred Networks
PDF
プログラミングコンテストでのデータ構造
by
Takuya Akiba
PDF
AtCoder Beginner Contest 019 解説
by
AtCoder Inc.
PDF
AtCoder Regular Contest 042 解説
by
AtCoder Inc.
PDF
プログラミングコンテストでのデータ構造 2 ~平衡二分探索木編~
by
Takuya Akiba
PPTX
動的計画法を極める!
by
HCPC: 北海道大学競技プログラミングサークル
PDF
AtCoder Beginner Contest 007 解説
by
AtCoder Inc.
PDF
プログラミングコンテストでの乱択アルゴリズム
by
Takuya Akiba
PDF
AtCoder Beginner Contest 017 解説
by
AtCoder Inc.
PDF
AtCoder Beginner Contest 008 解説
by
AtCoder Inc.
PDF
Binary indexed tree
by
HCPC: 北海道大学競技プログラミングサークル
PDF
AtCoder Regular Contest 030 解説
by
AtCoder Inc.
PDF
AtCoder Beginner Contest 024 解説
by
AtCoder Inc.
PDF
Rolling Hashを殺す話
by
Nagisa Eto
PDF
AtCoder Beginner Contest 026 解説
by
AtCoder Inc.
PDF
図と実装で理解する『木構造入門』
by
Proktmr
AtCoder Beginner Contest 034 解説
by
AtCoder Inc.
abc031
by
AtCoder Inc.
指数時間アルゴリズム入門
by
Yoichi Iwata
AtCoder Beginner Contest 002 解説
by
AtCoder Inc.
ウェーブレット木の世界
by
Preferred Networks
プログラミングコンテストでのデータ構造
by
Takuya Akiba
AtCoder Beginner Contest 019 解説
by
AtCoder Inc.
AtCoder Regular Contest 042 解説
by
AtCoder Inc.
プログラミングコンテストでのデータ構造 2 ~平衡二分探索木編~
by
Takuya Akiba
動的計画法を極める!
by
HCPC: 北海道大学競技プログラミングサークル
AtCoder Beginner Contest 007 解説
by
AtCoder Inc.
プログラミングコンテストでの乱択アルゴリズム
by
Takuya Akiba
AtCoder Beginner Contest 017 解説
by
AtCoder Inc.
AtCoder Beginner Contest 008 解説
by
AtCoder Inc.
Binary indexed tree
by
HCPC: 北海道大学競技プログラミングサークル
AtCoder Regular Contest 030 解説
by
AtCoder Inc.
AtCoder Beginner Contest 024 解説
by
AtCoder Inc.
Rolling Hashを殺す話
by
Nagisa Eto
AtCoder Beginner Contest 026 解説
by
AtCoder Inc.
図と実装で理解する『木構造入門』
by
Proktmr
Similar to AtCoder Beginner Contest 023 解説
PDF
AtCoder Regular Contest 023 解説
by
AtCoder Inc.
PDF
AtCoder Beginner Contest 018 解説
by
AtCoder Inc.
PDF
AtCoder Beginner Contest 020 解説
by
AtCoder Inc.
PDF
Donuts プロコンチャレンジ2014
by
kuno4n
PDF
AtCoder Regular Contest 017
by
AtCoder Inc.
PPTX
AtCoder Beginner Contest 003 解説
by
AtCoder Inc.
PDF
AtCoder Regular Contest 027 解説
by
AtCoder Inc.
PDF
AtCoder Beginner Contest 006 解説
by
AtCoder Inc.
PPTX
CODE FESTIVAL 予選B 解説
by
AtCoder Inc.
PDF
abc032
by
AtCoder Inc.
PDF
AtCoder Beginner Contest 011 解説
by
AtCoder Inc.
PDF
Arc041
by
AtCoder Inc.
PDF
AtCoder Regular Contest 025 解説
by
AtCoder Inc.
PDF
AtCoder Regular Contest 043 解説
by
AtCoder Inc.
PDF
CODE THANKS FESTIVAL 2014 B日程 解説
by
AtCoder Inc.
PDF
Donutsプロコンチャレンジ 2015 解説
by
kuno4n
PDF
DDPC 2016 予選 解説
by
AtCoder Inc.
PDF
AtCoder Beginner Contest 030 解説
by
AtCoder Inc.
PDF
HAPPY NEW YEAR 2017 コンテスト 解説
by
皓介 三田
PDF
130323 slide all
by
ikea0064
AtCoder Regular Contest 023 解説
by
AtCoder Inc.
AtCoder Beginner Contest 018 解説
by
AtCoder Inc.
AtCoder Beginner Contest 020 解説
by
AtCoder Inc.
Donuts プロコンチャレンジ2014
by
kuno4n
AtCoder Regular Contest 017
by
AtCoder Inc.
AtCoder Beginner Contest 003 解説
by
AtCoder Inc.
AtCoder Regular Contest 027 解説
by
AtCoder Inc.
AtCoder Beginner Contest 006 解説
by
AtCoder Inc.
CODE FESTIVAL 予選B 解説
by
AtCoder Inc.
abc032
by
AtCoder Inc.
AtCoder Beginner Contest 011 解説
by
AtCoder Inc.
Arc041
by
AtCoder Inc.
AtCoder Regular Contest 025 解説
by
AtCoder Inc.
AtCoder Regular Contest 043 解説
by
AtCoder Inc.
CODE THANKS FESTIVAL 2014 B日程 解説
by
AtCoder Inc.
Donutsプロコンチャレンジ 2015 解説
by
kuno4n
DDPC 2016 予選 解説
by
AtCoder Inc.
AtCoder Beginner Contest 030 解説
by
AtCoder Inc.
HAPPY NEW YEAR 2017 コンテスト 解説
by
皓介 三田
130323 slide all
by
ikea0064
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.
PDF
AtCoder Regular Contest 048
by
AtCoder Inc.
PDF
MUJINプログラミングチャレンジ2016 解説
by
AtCoder Inc.
PDF
AtCoder Beginner Contest 033 解説
by
AtCoder Inc.
PDF
arc047
by
AtCoder Inc.
PDF
CODE FESTIVAL 2015 沖縄ツアー 解説
by
AtCoder Inc.
PDF
AtCoder Regular Contest 046
by
AtCoder Inc.
PDF
CODE FESTIVAL 2015 解説
by
AtCoder Inc.
PDF
CODE FESTIVAL 2015 予選B 解説
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 Regular Contest 044 解説
by
AtCoder Inc.
PDF
天下一プログラマーコンテスト2015 予選B 解説
by
AtCoder Inc.
PDF
天下一プログラマーコンテスト2015 予選A E問題 解説
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 Regular Contest 048
by
AtCoder Inc.
MUJINプログラミングチャレンジ2016 解説
by
AtCoder Inc.
AtCoder Beginner Contest 033 解説
by
AtCoder Inc.
arc047
by
AtCoder Inc.
CODE FESTIVAL 2015 沖縄ツアー 解説
by
AtCoder Inc.
AtCoder Regular Contest 046
by
AtCoder Inc.
CODE FESTIVAL 2015 解説
by
AtCoder Inc.
CODE FESTIVAL 2015 予選B 解説
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 Regular Contest 044 解説
by
AtCoder Inc.
天下一プログラマーコンテスト2015 予選B 解説
by
AtCoder Inc.
天下一プログラマーコンテスト2015 予選A E問題 解説
by
AtCoder Inc.
AtCoder Beginner Contest 023 解説
1.
ABC023 解説
2.
問題A – 加算王
3.
問題概要 • 2 桁の正整数が与えられる。 •
各位の和を計算せよ。 • 10 ≦ 正整数 𝑋 ≦ 99
4.
解法 • 整数を読み込んで、十の位と一の位を求めて、合計値を計算します。 • 今回
𝑋 は 2 桁なので、以下の性質が成り立ちます。 • 十の位は 𝑋 を 10 で割った商です。 • 一の位は 𝑋 を 10 で割った余りです。
5.
問題B – 手芸王
6.
問題概要 • 文字列 𝑆
について、b→abc→cabca→bcabcab→…と変化させる手順 の何番目 (最初の b は 0 番目とおく) に出てくるか (あるいは出てこ ないか) を計算せよ。 • 1 ≦ 𝑁(= |𝑆|) ≦ 100
7.
解法 • アクセサリーの名前となりうる文字列は abcabcabc…
と a,b,c が順繰 りに出てくる文字列でなければなりません。 • さらに、長さは奇数長で、中央の文字が b とならなければなりません。 • これらの条件を満たした場合、(𝑁-1)/2 番目の手順の直後に文字列 𝑆 が名前としてでてきます。
8.
注意事項 • 入力には 𝑁
= 1, 𝑆 = “b” というケースが存在します。このケースの 答えは 0 となります。 • 実行時間には余裕があるので、実際に問題文の手順にしたがって アクセサリーの名前を探索するプログラムを作成する方針でも正解 することができます (こちらの方が勘違いによるミスが少なくなるか も?)。
9.
問題C – 収集王
10.
問題概要 • R 行
C 列のマス目があり、そのうち 𝑁 マスには飴が 1 個ずつありま す。 • 高橋君はあるマスを起点として、同一の行にあるすべての飴と、同 一の列にあるすべての飴を獲得します。 • ちょうど 𝐾 個の飴を獲得するような起点マスの総数を求めよ。 • 1 ≦ 𝑅 ≦ 100,000 • 1 ≦ 𝐶 ≦ 100,000 • 1 ≦ 𝐾 ≦ 𝑁 ≦ 100,000
11.
部分点解法 (30点) • すべてのマスについて、そのマスに高橋君が移動した場合に何個の 飴を獲得するのかを計算します。 •
全体の計算量はO(𝑅𝐶 𝑅 + 𝐶 + 𝑁) になります。
12.
満点解法 (30+70点) • 最初に、元の問題と似た別の問題について考えます。 •
問題:基本設定は一緒。違うのは、高橋君がいるマスに飴があった 場合は、1 個分 (C 問題元の設定) ではなく 2 個分としてカウントしま す。 • この問題の場合、高橋君がマス (x,y) に移動したなら、高橋君が獲 得する飴の個数が (第 x 行にある飴の総数) + (第 y 列にある飴の総 数) と等しくなります。
13.
満点解法 (30+70点) • 変形した問題を解くために、最初に各行、各列について飴が何個あ るのかを計算します。 O O
O O O 行 列 1 2 0 0 2 1 2 2
14.
満点解法 (30+70点) • 変形した問題を解くために、最初に各行、各列について飴が何個あ るのかを計算します。 •
次に、飴が X 個ある行(列)が Y 個ある、という情報を行ごと、列ごと にまとめます。 O O O O O 行 列 1 2 0 0 2 1 2 2 飴の個数 0 1 2 3 行の個数 0 1 2 0 飴の個数 0 1 2 3 列の個数 2 1 2 0
15.
満点解法 (30+70点) • すると、(行から
i 個の飴)×(列から K-i 個の飴) という組み合わせを i=0,1,…,K について計算して合計することで変形した問題を解くことが できます。 O O O O O 行 列 1 2 0 0 2 1 2 2 飴の個数 0 1 2 3 行の個数 0 1 2 0 飴の個数 0 1 2 3 列の個数 2 1 2 0
16.
満点解法 (30+70点) • 最後に元の問題を、先ほど計算した値
(変形した問題の解) から増 減させることで答えを求めていきます。 • 起点となるマスに飴がない場合は両方の問題において K 個か否か は変化しません。 • 一方で起点となるマスに飴がある場合はカウントがずれます。 ・そのようなマスで (行の飴の個数) + (列の飴の個数) = K なら、 余計にカウントしていることになります。 ・一方で和が K+1 ならカウントから除外していたことになります。
17.
満点解法 (30+70点) • まとめると、以下の手順になります。 ・変形した問題で、和が
K 個となるマス数を求める。 ・起点に飴があり、和が K 個となるマス数だけ引く。 ・起点に飴があり、和が K+1 個となるマス数だけ足す。 • 計算量は O(𝑅 + 𝐶 + 𝑁) となります。
18.
問題D – 射撃王
19.
問題概要 • 風船が 𝑁
個ある。 • 風船 𝑖 は最初に高度 𝐻𝑖 にあり、秒速 𝑆𝑖 で上昇する。 • 1 秒おきに風船を割っていくとき、一番上がった風船の高さ (ペナル ティ) として考えられる最小値はいくらか。 • 1 ≦ 𝑁 ≦ 100,000 • 1 ≦ 𝐻𝑖 ≦ 1,000,000,000 • 1 ≦ 𝑆𝑖 ≦ 1,000,000,000
20.
考察 • 単に高さ順に割る、速度順に割る、ではうまくいきません。 • 風船を割る順番をうまく決定するアルゴリズムが欲しいです。 •
実は、この問題は最小化問題としてそのまま考えるのは大変で、最 小化問題の代わりに、ある高さ X 以下を保ちながら風船を割ること ができるか、という判定問題に変形することで効率的にとくことがで きるようになります。
21.
部分点解法 (30点) • 越えてはならない高さ
X が定まっているとします。 • このとき、風船 𝑖 は (𝑋 − 𝐻𝑖)/𝑆𝑖 秒以内に割らなければならないとい うことが分かります (もしも 𝑋 < 𝐻𝑖 なら、この X では不可能であるこ とが分かります)。
22.
部分点解法 (30点) • 各風船をいつまでに割らなければならないかが分かったならば、実 際に割る方法があるかを判定する際、貪欲法を用いることにより判 定することができます。 •
具体的には、いつまでに割るかの制限時間が短い風船を優先して 割るという貪欲法です。 • 部分点解法では風船の個数が少なく、X の候補は およそ 200,000 通りしか無いので、部分点を得ることができます。
23.
満点解法(30+70点) • この問題のすべてのテストケースについて考えた場合、風船の高さ として考えられるものがとても多く、すべての X
を仮定することができ ません。 • 実は、ある値 Opt を基準として、 ・ Opt > X ならば、どうやっても達成できない。 ・ Opt ≦ X ならば、先ほどの貪欲法アルゴリズムで達成できる。 という性質が成り立ちます。 • この Opt の値が、求める答えとなります。
24.
満点解法(30+70点) • この性質をみたすような場合に Opt
を求める際、二分探索を用いる ことができます。 • 例えば、区間 [left,right] (left≦right) の内部に Opt がある (left≦Opt≦right) とわかっている場合に、left≦half≦right となる half を考え、 X=half が条件を満たす→ Opt は区間 [half,right] 内にある。 X=half が条件を満たさない→ Opt は区間 [left,half) 内にある。 として区間を狭めていくという方針です。 • half は (left+right)/2 辺りの整数を取ることが多いです。
25.
満点解法(30+70点) • X を定めたときに、制限時間でソートして判定するので、全体で O(𝑁log𝑁
∗ log(𝐻 + 𝑁𝑆)) (ただし 𝐻, 𝑆 はそれぞれ、開始時高度の最 大値、速度の最大値) となります。 • この解法ならば満点を得ることができます。
26.
備考 • 制限時間でソートする際、後の判定で制限時間が 𝑁
秒以上である 風船は一律制限時間が 𝑁 秒であるとしても良い (なぜなら、どの風 船も 𝑁 − 1 秒以内に割られるようにできるため) ので、0 以上 𝑁 以 下の整数値をソートする問題となります。 • これはビンソートを用いることにより O( 𝑁 ) で実現することができます。 • 計算量は O(𝑁log(𝐻 + 𝑁𝑆)) になります。
Download