SlideShare una empresa de Scribd logo
1 de 20
Descargar para leer sin conexión
ABC018 解説
解説スライド担当: 城下 慎也(@phidnight)
問題A – 豆まき
問題概要
• 3 人の人物の得点が与えられる。
• それぞれの順位を計算せよ。
• 1 ≦ 得点 ≦ 100
• 得点は互いに異なる。
解法
• 整数を読み込んで、他の整数と比較します。
• 順位は、(その人より多くの得点を獲得した人数)+1 で計算できます。
• 出力は複数行の出力です。
• いろいろな出力方法に慣れておくと便利です。
問題B – 文字列の反転
問題概要
• 文字列 𝑆 について、ある部分文字列を反転(逆順に)させる操作が複
数回与えられる。
• 最終的に出来上がる文字列を出力せよ。
• 1 ≦ |𝑆| ≦ 100
• 1 ≦ (操作回数) ≦ 100
解法
• 文字列を読み込んで、文字列を加工する問題です。
• 反転の方法としては、例えば別の配列に対して 1 文字ずつ逆順に
(例えば配列 s と 配列 t があったときに、 s[l], s[l+1], …, s[r] を 1 文字
ずつ t[r], t[r-1], … , t[l] に)書き込んだ後、 t[l], t[l+1], …, t[r] を s[l],
s[l+1], …, s[r] に移す方法があります。
ライブラリ?
• 文字列の反転とかはライブラリに入っている場合もあるかもしれませ
ん。入っている場合はうまく活用すると実装コストが劇的に下がりま
す。
• ライブラリがあると書くコストが下がりますが、一度も中身を実装した
ことがない場合は実装してみると良い練習になるかもしれません。
• その他、頻出のアルゴリズム (フローとか幾何計算とか) をライブラリ
に揃えておくと後々コンテストで役立つときが来るかもしれません。
問題C – 菱型カウント
問題概要
• R 行 C 列のマス目があり、各マスは白マスか黒マスです。
• 白マスを菱型状 (問題文の制約に従うと斜めの正方形状になる) に
選んで緑色に塗ります。
• そのような塗り方の総数を求めよ。
• 3 ≦ 𝑅 ≦ 500
• 3 ≦ 𝐶 ≦ 500
• 2 ≦ 𝐾 ≦ 500
部分点解法 1 (30点)
• 最初に中心 (x,y) を固定します。
• その中心からマンハッタン距離が 𝐾 以下の範囲 (問題文中に書か
れた、緑色に塗る範囲) について、そのマスに黒マスがあるかを 1 マ
スずつ見ます。
• 黒マスが 1 つもないなら、答えに 1 を加算します。
• すべての候補について試すことで答えを求めることができます。
• 全体の計算量はO(𝑅𝐶𝐾2
) になります。
満点解法 (30+70点)
• 中心を固定したときに黒マスの有無を効率的に計算したいです。
• 例えば、列ごとに区切って考えてみます。
o o x o o x
x o o o x o
o o o o o o
o x o o o o
o o x o o o
縦に切って考えてみる。
満点解法 (30+70点)
• 各マスについて、そのマスから上方向/下方向にそのマス含め何マ
スまで連続して白マスがあるかを計算します。
• 各マスから上下方向に辿ることで求めることができます。
o o x o o x
x o o o x o
o o o o o o
o x o o o o
o o x o o o
1/1 1/3 0/0 1/5 1/1 0/0
0/0 2/2 1/3 2/4 0/0 1/4
1/3 3/1 2/2 3/3 1/3 2/3
2/2 0/0 3/1 4/2 2/2 3/2
3/1 1/1 0/0 5/1 3/1 4/1
満点解法 (30+70点)
• すると、あるマス (x,y) が菱型部分の中央として成立するためには、
横 1 列に見て上下方向に一定マス以上白マスあれば良いということ
になります。
• これを書くマスについてチェックすることで条件をみたすか判定でき
ます。
• 計算量はO(𝑅𝐶𝐾)となります。
1以上 2以上 3以上 ... K以上 … 3以上 2以上 1以上
問題D – バレンタインデー
問題概要
• 女子 𝑁 人と男子 𝑀 人からなるクラスがある。
• 女子 𝑃 人と男子 𝑄 人からなるグループを 1 つ作る。
• 𝑅 個のチョコレートのうち、渡されるチョコレートに定められた幸福度の合
計値の最大値を計算せよ。
• 1 ≦ 𝑁 ≦ 18
• 1 ≦ 𝑀 ≦ 18
• 1 ≦ 𝑃 ≦ 𝑁
• 1 ≦ 𝑄 ≦ 𝑀
• 1 ≦ (幸福度) ≦ 10,000
部分点解法 (30点)
• 考えられるすべてのグループを考えます。
• グループは全部で 𝑁C 𝑃 * 𝑀C 𝑄通りあるので、それらをすべて生成し、
各チョコレートについて O(1) で判定することで正解できます。
満点解法(30+70点)
• グループの数自体は多く、すべてを考慮していると時間がかかって
しまいます。
• 一方で女子だけ、男子だけの組み合わせを固定するくらいならそこ
まで組み合わせ数が多くありません。
• そこで、女子だけを固定して考えてみます。
満点解法(30+70点)
• グループ内の女子を固定した場合、各チョコレートについて、
- 送る女子がいない→そのチョコレートは考慮しない。
- 送る女子がいる→送られるかはただ 1 人の男子にのみ依存。
とわかります。
• すると、各男子ごとに、その男子がグループに入ることでいくら幸福
度が得られるかが定まります。
• この値は他の男子の選び方には依存しないので、貪欲に Q 人取れ
ば良いことがわかります。
満点解法(30+70点)
• 以上より、すべての女子の選び方を固定して、男子は貪欲に決定す
ることで高速に計算することができます。
• このような方針を半分全列挙と呼びます。
• 今回のように男女で分かれている場合もありますが、特に分けられ
ていない場合でも有用な場合があります。

Más contenido relacionado

La actualidad más candente

La actualidad más candente (20)

abc031
abc031abc031
abc031
 
AtCoder Beginner Contest 028 解説
AtCoder Beginner Contest 028 解説AtCoder Beginner Contest 028 解説
AtCoder Beginner Contest 028 解説
 
AtCoder Beginner Contest 026 解説
AtCoder Beginner Contest 026 解説AtCoder Beginner Contest 026 解説
AtCoder Beginner Contest 026 解説
 
AtCoder Beginner Contest 013 解説
AtCoder Beginner Contest 013 解説AtCoder Beginner Contest 013 解説
AtCoder Beginner Contest 013 解説
 
AtCoder Regular Contest 025 解説
AtCoder Regular Contest 025 解説AtCoder Regular Contest 025 解説
AtCoder Regular Contest 025 解説
 
AtCoder Regular Contest 045 解説
AtCoder Regular Contest 045 解説AtCoder Regular Contest 045 解説
AtCoder Regular Contest 045 解説
 
AtCoder Beginner Contest 011 解説
AtCoder Beginner Contest 011 解説AtCoder Beginner Contest 011 解説
AtCoder Beginner Contest 011 解説
 
abc027
abc027abc027
abc027
 
AtCoder Regular Contest 033 解説
AtCoder Regular Contest 033 解説AtCoder Regular Contest 033 解説
AtCoder Regular Contest 033 解説
 
AtCoder Beginner Contest 020 解説
AtCoder Beginner Contest 020 解説AtCoder Beginner Contest 020 解説
AtCoder Beginner Contest 020 解説
 
AtCoder Regular Contest 046
AtCoder Regular Contest 046AtCoder Regular Contest 046
AtCoder Regular Contest 046
 
AtCoder Beginner Contest 023 解説
AtCoder Beginner Contest 023 解説AtCoder Beginner Contest 023 解説
AtCoder Beginner Contest 023 解説
 
Indeedなう 予選A 解説
Indeedなう 予選A 解説Indeedなう 予選A 解説
Indeedなう 予選A 解説
 
AtCoder Beginner Contest 004 解説
AtCoder Beginner Contest 004 解説AtCoder Beginner Contest 004 解説
AtCoder Beginner Contest 004 解説
 
AtCoder Beginner Contest 008 解説
AtCoder Beginner Contest 008 解説AtCoder Beginner Contest 008 解説
AtCoder Beginner Contest 008 解説
 
AtCoder Beginner Contest 035 解説
AtCoder Beginner Contest 035 解説AtCoder Beginner Contest 035 解説
AtCoder Beginner Contest 035 解説
 
AtCoder Beginner Contest 030 解説
AtCoder Beginner Contest 030 解説AtCoder Beginner Contest 030 解説
AtCoder Beginner Contest 030 解説
 
abc032
abc032abc032
abc032
 
AtCoder Regular Contest 039 解説
AtCoder Regular Contest 039 解説AtCoder Regular Contest 039 解説
AtCoder Regular Contest 039 解説
 
AtCoder Regular Contest 021 解説
AtCoder Regular Contest 021 解説AtCoder Regular Contest 021 解説
AtCoder Regular Contest 021 解説
 

Destacado

AtCoder Beginner Contest 003 解説
AtCoder Beginner Contest 003 解説AtCoder Beginner Contest 003 解説
AtCoder Beginner Contest 003 解説
AtCoder Inc.
 
プログラミングコンテストでのデータ構造
プログラミングコンテストでのデータ構造プログラミングコンテストでのデータ構造
プログラミングコンテストでのデータ構造
Takuya Akiba
 

Destacado (18)

AtCoder Beginner Contest 019 解説
AtCoder Beginner Contest 019 解説AtCoder Beginner Contest 019 解説
AtCoder Beginner Contest 019 解説
 
AtCoder Beginner Contest 014 解説
AtCoder Beginner Contest 014 解説AtCoder Beginner Contest 014 解説
AtCoder Beginner Contest 014 解説
 
AtCoder Beginner Contest 007 解説
AtCoder Beginner Contest 007 解説AtCoder Beginner Contest 007 解説
AtCoder Beginner Contest 007 解説
 
AtCoder Beginner Contest 005 解説
AtCoder Beginner Contest 005 解説AtCoder Beginner Contest 005 解説
AtCoder Beginner Contest 005 解説
 
AtCoder Beginner Contest 006 解説
AtCoder Beginner Contest 006 解説AtCoder Beginner Contest 006 解説
AtCoder Beginner Contest 006 解説
 
ABC001 解説
ABC001 解説ABC001 解説
ABC001 解説
 
AtCoderに毎回参加したくなる仕組み
AtCoderに毎回参加したくなる仕組みAtCoderに毎回参加したくなる仕組み
AtCoderに毎回参加したくなる仕組み
 
AtCoder Beginner Contest 024 解説
AtCoder Beginner Contest 024 解説AtCoder Beginner Contest 024 解説
AtCoder Beginner Contest 024 解説
 
AtCoder Beginner Contest 003 解説
AtCoder Beginner Contest 003 解説AtCoder Beginner Contest 003 解説
AtCoder Beginner Contest 003 解説
 
Abc009
Abc009Abc009
Abc009
 
AtCoder Beginner Contest 015 解説
AtCoder Beginner Contest 015 解説AtCoder Beginner Contest 015 解説
AtCoder Beginner Contest 015 解説
 
プログラミングコンテストでのデータ構造
プログラミングコンテストでのデータ構造プログラミングコンテストでのデータ構造
プログラミングコンテストでのデータ構造
 
AtCoder Beginner Contest 002 解説
AtCoder Beginner Contest 002 解説AtCoder Beginner Contest 002 解説
AtCoder Beginner Contest 002 解説
 
AtCoder Beginner Contest 012 解説
AtCoder Beginner Contest 012 解説AtCoder Beginner Contest 012 解説
AtCoder Beginner Contest 012 解説
 
競技プログラミング頻出アルゴリズム攻略
競技プログラミング頻出アルゴリズム攻略競技プログラミング頻出アルゴリズム攻略
競技プログラミング頻出アルゴリズム攻略
 
arc047
arc047arc047
arc047
 
AtCoder Beginner Contest 033 解説
AtCoder Beginner Contest 033 解説AtCoder Beginner Contest 033 解説
AtCoder Beginner Contest 033 解説
 
プログラミングコンテストでのデータ構造 2 ~平衡二分探索木編~
プログラミングコンテストでのデータ構造 2 ~平衡二分探索木編~プログラミングコンテストでのデータ構造 2 ~平衡二分探索木編~
プログラミングコンテストでのデータ構造 2 ~平衡二分探索木編~
 

Similar a AtCoder Beginner Contest 018 解説 (14)

Indeedなう 予選B 解説
Indeedなう 予選B 解説Indeedなう 予選B 解説
Indeedなう 予選B 解説
 
UTPC2012 - K
UTPC2012 - KUTPC2012 - K
UTPC2012 - K
 
Arc041
Arc041Arc041
Arc041
 
CODE THANKS FESTIVAL 2014 A日程 解説
CODE THANKS FESTIVAL 2014 A日程 解説CODE THANKS FESTIVAL 2014 A日程 解説
CODE THANKS FESTIVAL 2014 A日程 解説
 
HAPPY NEW YEAR 2017 コンテスト 解説
HAPPY NEW YEAR 2017 コンテスト 解説HAPPY NEW YEAR 2017 コンテスト 解説
HAPPY NEW YEAR 2017 コンテスト 解説
 
DDPC 2016 予選 解説
DDPC 2016 予選 解説DDPC 2016 予選 解説
DDPC 2016 予選 解説
 
Square869120 contest #2
Square869120 contest #2Square869120 contest #2
Square869120 contest #2
 
Aizu-2017: B
Aizu-2017: BAizu-2017: B
Aizu-2017: B
 
数学教材(中間発表)
数学教材(中間発表)数学教材(中間発表)
数学教材(中間発表)
 
UTPC2012 - E
UTPC2012 - EUTPC2012 - E
UTPC2012 - E
 
Simulation_Report1
Simulation_Report1Simulation_Report1
Simulation_Report1
 
Machine Learning Seminar (1)
Machine Learning Seminar (1)Machine Learning Seminar (1)
Machine Learning Seminar (1)
 
AtCoder Regular Contest 024 解説
AtCoder Regular Contest 024 解説AtCoder Regular Contest 024 解説
AtCoder Regular Contest 024 解説
 
Kth
KthKth
Kth
 

Más de AtCoder Inc.

Más de AtCoder Inc. (15)

TCO2017R1
TCO2017R1TCO2017R1
TCO2017R1
 
Disco Presents ディスカバリーチャンネルプログラミングコンテスト2016 本選 解説
Disco Presents ディスカバリーチャンネルプログラミングコンテスト2016 本選 解説Disco Presents ディスカバリーチャンネルプログラミングコンテスト2016 本選 解説
Disco Presents ディスカバリーチャンネルプログラミングコンテスト2016 本選 解説
 
Chokudai Contest 001
Chokudai Contest 001Chokudai Contest 001
Chokudai Contest 001
 
AtCoder Regular Contest 049 解説
AtCoder Regular Contest 049 解説AtCoder Regular Contest 049 解説
AtCoder Regular Contest 049 解説
 
AtCoder Beginner Contest 034 解説
AtCoder Beginner Contest 034 解説AtCoder Beginner Contest 034 解説
AtCoder Beginner Contest 034 解説
 
AtCoder Regular Contest 048
AtCoder Regular Contest 048AtCoder Regular Contest 048
AtCoder Regular Contest 048
 
MUJINプログラミングチャレンジ2016 解説
MUJINプログラミングチャレンジ2016 解説MUJINプログラミングチャレンジ2016 解説
MUJINプログラミングチャレンジ2016 解説
 
CODE FESTIVAL 2015 沖縄ツアー 解説
CODE FESTIVAL 2015 沖縄ツアー 解説CODE FESTIVAL 2015 沖縄ツアー 解説
CODE FESTIVAL 2015 沖縄ツアー 解説
 
CODE FESTIVAL 2015 解説
CODE FESTIVAL 2015 解説CODE FESTIVAL 2015 解説
CODE FESTIVAL 2015 解説
 
CODE FESTIVAL 2015 予選B 解説
CODE FESTIVAL 2015 予選B 解説CODE FESTIVAL 2015 予選B 解説
CODE FESTIVAL 2015 予選B 解説
 
CODE FESTIVAL 2015 予選A 解説
CODE FESTIVAL 2015 予選A 解説CODE FESTIVAL 2015 予選A 解説
CODE FESTIVAL 2015 予選A 解説
 
AtCoder Regular Contest 044 解説
AtCoder Regular Contest 044 解説AtCoder Regular Contest 044 解説
AtCoder Regular Contest 044 解説
 
天下一プログラマーコンテスト2015 予選B 解説
天下一プログラマーコンテスト2015 予選B 解説天下一プログラマーコンテスト2015 予選B 解説
天下一プログラマーコンテスト2015 予選B 解説
 
AtCoder Regular Contest 043 解説
AtCoder Regular Contest 043 解説AtCoder Regular Contest 043 解説
AtCoder Regular Contest 043 解説
 
天下一プログラマーコンテスト2015 予選A E問題 解説
天下一プログラマーコンテスト2015 予選A E問題 解説天下一プログラマーコンテスト2015 予選A E問題 解説
天下一プログラマーコンテスト2015 予選A E問題 解説
 

Último

Último (6)

生成AIの回答内容の修正を課題としたレポートについて:お茶の水女子大学「授業・研究における生成系AIの活用事例」での講演資料
生成AIの回答内容の修正を課題としたレポートについて:お茶の水女子大学「授業・研究における生成系AIの活用事例」での講演資料生成AIの回答内容の修正を課題としたレポートについて:お茶の水女子大学「授業・研究における生成系AIの活用事例」での講演資料
生成AIの回答内容の修正を課題としたレポートについて:お茶の水女子大学「授業・研究における生成系AIの活用事例」での講演資料
 
東京工業大学 環境・社会理工学院 建築学系 大学院入学入試・進学説明会2024_v2
東京工業大学 環境・社会理工学院 建築学系 大学院入学入試・進学説明会2024_v2東京工業大学 環境・社会理工学院 建築学系 大学院入学入試・進学説明会2024_v2
東京工業大学 環境・社会理工学院 建築学系 大学院入学入試・進学説明会2024_v2
 
2024年度 東京工業大学 工学院 機械系 大学院 修士課程 入試 説明会 資料
2024年度 東京工業大学 工学院 機械系 大学院 修士課程 入試 説明会 資料2024年度 東京工業大学 工学院 機械系 大学院 修士課程 入試 説明会 資料
2024年度 東京工業大学 工学院 機械系 大学院 修士課程 入試 説明会 資料
 
ゲーム理論 BASIC 演習106 -価格の交渉ゲーム-#ゲーム理論 #gametheory #数学
ゲーム理論 BASIC 演習106 -価格の交渉ゲーム-#ゲーム理論 #gametheory #数学ゲーム理論 BASIC 演習106 -価格の交渉ゲーム-#ゲーム理論 #gametheory #数学
ゲーム理論 BASIC 演習106 -価格の交渉ゲーム-#ゲーム理論 #gametheory #数学
 
次世代機の製品コンセプトを描く ~未来の機械を創造してみよう~
次世代機の製品コンセプトを描く ~未来の機械を創造してみよう~次世代機の製品コンセプトを描く ~未来の機械を創造してみよう~
次世代機の製品コンセプトを描く ~未来の機械を創造してみよう~
 
世界を変えるクレーンを生み出そう! 高知エンジニアリングキャンプ2024プログラム
世界を変えるクレーンを生み出そう! 高知エンジニアリングキャンプ2024プログラム世界を変えるクレーンを生み出そう! 高知エンジニアリングキャンプ2024プログラム
世界を変えるクレーンを生み出そう! 高知エンジニアリングキャンプ2024プログラム
 

AtCoder Beginner Contest 018 解説