Home
Explore
Submit Search
Upload
Login
Signup
Advertisement
Check these out next
AtCoder Beginner Contest 021 解説
AtCoder Inc.
AtCoder Beginner Contest 002 解説
AtCoder Inc.
Abc009
AtCoder Inc.
AtCoder Beginner Contest 029 解説
AtCoder Inc.
AtCoder Beginner Contest 017 解説
AtCoder Inc.
Indeedなう 予選B 解説
AtCoder Inc.
AtCoder Beginner Contest 030 解説
AtCoder Inc.
AtCoder Beginner Contest 014 解説
AtCoder Inc.
1
of
26
Top clipped slide
AtCoder Beginner Contest 023 解説
May. 9, 2015
•
0 likes
2 likes
×
Be the first to like this
Show More
•
17,273 views
views
×
Total views
0
On Slideshare
0
From embeds
0
Number of embeds
0
Download Now
Download to read offline
Report
Education
AtCoder Beginner Contest 023 解説
AtCoder Inc.
Follow
CEO at AtCoder
Advertisement
Advertisement
Advertisement
Recommended
AtCoder Beginner Contest 012 解説
AtCoder Inc.
69K views
•
49 slides
AtCoder Beginner Contest 006 解説
AtCoder Inc.
19.2K views
•
57 slides
AtCoder Beginner Contest 034 解説
AtCoder Inc.
17.6K views
•
32 slides
AtCoder Regular Contest 037 解説
AtCoder Inc.
11.2K views
•
25 slides
abc032
AtCoder Inc.
22.5K views
•
44 slides
AtCoder Beginner Contest 015 解説
AtCoder Inc.
14.8K views
•
36 slides
More Related Content
Slideshows for you
(20)
AtCoder Beginner Contest 021 解説
AtCoder Inc.
•
15.1K views
AtCoder Beginner Contest 002 解説
AtCoder Inc.
•
19.5K views
Abc009
AtCoder Inc.
•
15.2K views
AtCoder Beginner Contest 029 解説
AtCoder Inc.
•
14.8K views
AtCoder Beginner Contest 017 解説
AtCoder Inc.
•
15.5K views
Indeedなう 予選B 解説
AtCoder Inc.
•
3.9K views
AtCoder Beginner Contest 030 解説
AtCoder Inc.
•
11.1K views
AtCoder Beginner Contest 014 解説
AtCoder Inc.
•
14.3K views
AtCoder Beginner Contest 020 解説
AtCoder Inc.
•
11.9K views
CODE FESTIVAL 2014 本選 解説
AtCoder Inc.
•
5.4K views
プログラミングコンテストでのデータ構造
Takuya Akiba
•
103.2K views
動的計画法を極める!
HCPC: 北海道大学競技プログラミングサークル
•
12.3K views
Convex Hull Trick
HCPC: 北海道大学競技プログラミングサークル
•
3.1K views
AtCoder Beginner Contest 022 解説
AtCoder Inc.
•
12.2K views
AtCoder Beginner Contest 005 解説
AtCoder Inc.
•
12K views
AtCoder Beginner Contest 018 解説
AtCoder Inc.
•
10.7K views
RMQ クエリ処理
HCPC: 北海道大学競技プログラミングサークル
•
4.1K views
AtCoder Beginner Contest 011 解説
AtCoder Inc.
•
12.7K views
abc027
AtCoder Inc.
•
14.9K views
AtCoder Regular Contest 031 解説
AtCoder Inc.
•
11K views
Similar to AtCoder Beginner Contest 023 解説
(9)
Schönhage Strassen Algorithm
cookies 146
•
2.7K views
DDPC 2016 予選 解説
AtCoder Inc.
•
4.2K views
AtCoder Regular Contest 046
AtCoder Inc.
•
7.3K views
写像 12 相
HCPC: 北海道大学競技プログラミングサークル
•
3.6K views
Kth
oupc
•
657 views
AtCoder Regular Contest 023 解説
AtCoder Inc.
•
5.8K views
計算機理論入門03
Tomoyuki Tarumi
•
1.8K views
AtCoder Regular Contest 021 解説
AtCoder Inc.
•
4.4K views
happy b1rthday 2 me 解説
rian_tkb
•
1.1K views
Advertisement
More from AtCoder Inc.
(20)
TCO2017R1
AtCoder Inc.
•
12.8K views
AtCoderに毎回参加したくなる仕組み
AtCoder Inc.
•
12.5K views
Square869120 contest #2
AtCoder Inc.
•
4K views
AtCoder Beginner Contest 035 解説
AtCoder Inc.
•
16.7K views
Disco Presents ディスカバリーチャンネルプログラミングコンテスト2016 本選 解説
AtCoder Inc.
•
3.4K views
Chokudai Contest 001
AtCoder Inc.
•
3.8K views
AtCoder Regular Contest 049 解説
AtCoder Inc.
•
9.7K views
AtCoder Regular Contest 048
AtCoder Inc.
•
5.4K views
MUJINプログラミングチャレンジ2016 解説
AtCoder Inc.
•
5.5K views
AtCoder Beginner Contest 033 解説
AtCoder Inc.
•
11.1K views
arc047
AtCoder Inc.
•
7.1K views
CODE FESTIVAL 2015 沖縄ツアー 解説
AtCoder Inc.
•
2.4K views
abc031
AtCoder Inc.
•
9.3K views
CODE FESTIVAL 2015 解説
AtCoder Inc.
•
4.9K views
CODE FESTIVAL 2015 予選B 解説
AtCoder Inc.
•
5.8K views
AtCoder Regular Contest 045 解説
AtCoder Inc.
•
7.1K views
CODE FESTIVAL 2015 予選A 解説
AtCoder Inc.
•
7.3K views
AtCoder Regular Contest 044 解説
AtCoder Inc.
•
5.7K views
AtCoder Beginner Contest 028 解説
AtCoder Inc.
•
9.5K views
天下一プログラマーコンテスト2015 予選B 解説
AtCoder Inc.
•
2K views
Recently uploaded
(20)
essay_writing_Japanese.pptx
Yumikotanaka3
•
1 view
firefly.pptx
Ryuji Dohaku
•
16 views
★可查可存档〖制作伯明翰大学文凭证书毕业证〗
vgfg1
•
2 views
MOTION OF CHARGED PARTICLE IN MAGNETIC FIELD.ppt
DinamGyatsoAadHenmoo
•
2 views
10南十字星大学.pdf
dsadasd17
•
6 views
★可查可存档〖制作犹他大学文凭证书毕业证〗
vvvvv24
•
2 views
#专业办证《UH毕业证学位证原版精仿》
sarotex825pgobom
•
2 views
QQ微信819 4343办Queen's假毕业证成绩单,办皇后大学本科毕业证书,办Queen's硕士假文凭,办Queen's研究生学位证书,办Queen'...
ColumbiaDiplomaColum
•
5 views
17里贾纳大学.pdf
dsadasd17
•
2 views
澳洲USQ高仿毕业证,办南昆士兰大学毕业证书,QQ/WeChat:819 4343,办USQ毕业证成绩单,办USQ本科/硕士假文凭,办USQ学历认证,办南...
MaggieSU14
•
12 views
购买毕业证:英博夏尔大学文凭证书
tvescev
•
0 views
★可查可存档〖制作麻省大学波士顿分校文凭证书毕业证〗
vvvvv24
•
2 views
20230528.pptx
ssuser5cce1e
•
12 views
#专业办证《UA毕业证学位证原版精仿》
sarotex825pgobom
•
2 views
40霍华德大学.pdf
dsadasd17
•
2 views
90加州尔湾分校.pdf
dsadasd17
•
2 views
ST07.pdf
Masato FUKUHARA
•
7 views
购买毕业证:赫尔大学文凭证书
tvescev
•
0 views
#国外留学文凭购买Edgewood假毕业证书
fc2c0f2b1mymailol
•
0 views
#学位证靠谱办梅西大学文凭证书全套
qghfsvkwiqiubridge
•
2 views
Advertisement
AtCoder Beginner Contest 023 解説
ABC023 解説
問題A – 加算王
問題概要 • 2 桁の正整数が与えられる。 •
各位の和を計算せよ。 • 10 ≦ 正整数 𝑋 ≦ 99
解法 • 整数を読み込んで、十の位と一の位を求めて、合計値を計算します。 • 今回
𝑋 は 2 桁なので、以下の性質が成り立ちます。 • 十の位は 𝑋 を 10 で割った商です。 • 一の位は 𝑋 を 10 で割った余りです。
問題B – 手芸王
問題概要 • 文字列 𝑆
について、b→abc→cabca→bcabcab→…と変化させる手順 の何番目 (最初の b は 0 番目とおく) に出てくるか (あるいは出てこ ないか) を計算せよ。 • 1 ≦ 𝑁(= |𝑆|) ≦ 100
解法 • アクセサリーの名前となりうる文字列は abcabcabc…
と a,b,c が順繰 りに出てくる文字列でなければなりません。 • さらに、長さは奇数長で、中央の文字が b とならなければなりません。 • これらの条件を満たした場合、(𝑁-1)/2 番目の手順の直後に文字列 𝑆 が名前としてでてきます。
注意事項 • 入力には 𝑁
= 1, 𝑆 = “b” というケースが存在します。このケースの 答えは 0 となります。 • 実行時間には余裕があるので、実際に問題文の手順にしたがって アクセサリーの名前を探索するプログラムを作成する方針でも正解 することができます (こちらの方が勘違いによるミスが少なくなるか も?)。
問題C – 収集王
問題概要 • R 行
C 列のマス目があり、そのうち 𝑁 マスには飴が 1 個ずつありま す。 • 高橋君はあるマスを起点として、同一の行にあるすべての飴と、同 一の列にあるすべての飴を獲得します。 • ちょうど 𝐾 個の飴を獲得するような起点マスの総数を求めよ。 • 1 ≦ 𝑅 ≦ 100,000 • 1 ≦ 𝐶 ≦ 100,000 • 1 ≦ 𝐾 ≦ 𝑁 ≦ 100,000
部分点解法 (30点) • すべてのマスについて、そのマスに高橋君が移動した場合に何個の 飴を獲得するのかを計算します。 •
全体の計算量はO(𝑅𝐶 𝑅 + 𝐶 + 𝑁) になります。
満点解法 (30+70点) • 最初に、元の問題と似た別の問題について考えます。 •
問題:基本設定は一緒。違うのは、高橋君がいるマスに飴があった 場合は、1 個分 (C 問題元の設定) ではなく 2 個分としてカウントしま す。 • この問題の場合、高橋君がマス (x,y) に移動したなら、高橋君が獲 得する飴の個数が (第 x 行にある飴の総数) + (第 y 列にある飴の総 数) と等しくなります。
満点解法 (30+70点) • 変形した問題を解くために、最初に各行、各列について飴が何個あ るのかを計算します。 O O
O O O 行 列 1 2 0 0 2 1 2 2
満点解法 (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
満点解法 (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
満点解法 (30+70点) • 最後に元の問題を、先ほど計算した値
(変形した問題の解) から増 減させることで答えを求めていきます。 • 起点となるマスに飴がない場合は両方の問題において K 個か否か は変化しません。 • 一方で起点となるマスに飴がある場合はカウントがずれます。 ・そのようなマスで (行の飴の個数) + (列の飴の個数) = K なら、 余計にカウントしていることになります。 ・一方で和が K+1 ならカウントから除外していたことになります。
満点解法 (30+70点) • まとめると、以下の手順になります。 ・変形した問題で、和が
K 個となるマス数を求める。 ・起点に飴があり、和が K 個となるマス数だけ引く。 ・起点に飴があり、和が K+1 個となるマス数だけ足す。 • 計算量は O(𝑅 + 𝐶 + 𝑁) となります。
問題D – 射撃王
問題概要 • 風船が 𝑁
個ある。 • 風船 𝑖 は最初に高度 𝐻𝑖 にあり、秒速 𝑆𝑖 で上昇する。 • 1 秒おきに風船を割っていくとき、一番上がった風船の高さ (ペナル ティ) として考えられる最小値はいくらか。 • 1 ≦ 𝑁 ≦ 100,000 • 1 ≦ 𝐻𝑖 ≦ 1,000,000,000 • 1 ≦ 𝑆𝑖 ≦ 1,000,000,000
考察 • 単に高さ順に割る、速度順に割る、ではうまくいきません。 • 風船を割る順番をうまく決定するアルゴリズムが欲しいです。 •
実は、この問題は最小化問題としてそのまま考えるのは大変で、最 小化問題の代わりに、ある高さ X 以下を保ちながら風船を割ること ができるか、という判定問題に変形することで効率的にとくことがで きるようになります。
部分点解法 (30点) • 越えてはならない高さ
X が定まっているとします。 • このとき、風船 𝑖 は (𝑋 − 𝐻𝑖)/𝑆𝑖 秒以内に割らなければならないとい うことが分かります (もしも 𝑋 < 𝐻𝑖 なら、この X では不可能であるこ とが分かります)。
部分点解法 (30点) • 各風船をいつまでに割らなければならないかが分かったならば、実 際に割る方法があるかを判定する際、貪欲法を用いることにより判 定することができます。 •
具体的には、いつまでに割るかの制限時間が短い風船を優先して 割るという貪欲法です。 • 部分点解法では風船の個数が少なく、X の候補は およそ 200,000 通りしか無いので、部分点を得ることができます。
満点解法(30+70点) • この問題のすべてのテストケースについて考えた場合、風船の高さ として考えられるものがとても多く、すべての X
を仮定することができ ません。 • 実は、ある値 Opt を基準として、 ・ Opt > X ならば、どうやっても達成できない。 ・ Opt ≦ X ならば、先ほどの貪欲法アルゴリズムで達成できる。 という性質が成り立ちます。 • この Opt の値が、求める答えとなります。
満点解法(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 辺りの整数を取ることが多いです。
満点解法(30+70点) • X を定めたときに、制限時間でソートして判定するので、全体で O(𝑁log𝑁
∗ log(𝐻 + 𝑁𝑆)) (ただし 𝐻, 𝑆 はそれぞれ、開始時高度の最 大値、速度の最大値) となります。 • この解法ならば満点を得ることができます。
備考 • 制限時間でソートする際、後の判定で制限時間が 𝑁
秒以上である 風船は一律制限時間が 𝑁 秒であるとしても良い (なぜなら、どの風 船も 𝑁 − 1 秒以内に割られるようにできるため) ので、0 以上 𝑁 以 下の整数値をソートする問題となります。 • これはビンソートを用いることにより O( 𝑁 ) で実現することができます。 • 計算量は O(𝑁log(𝐻 + 𝑁𝑆)) になります。
Advertisement