Submit Search
Upload
AtCoder Beginner Contest 025 解説
•
1 like
•
13,041 views
A
AtCoder Inc.
Follow
AtCoder Beginner Contest 025 解説
Read less
Read more
Education
Report
Share
Report
Share
1 of 27
Download now
Download to read offline
Recommended
abc027
abc027
AtCoder Inc.
AtCoder Beginner Contest 006 解説
AtCoder Beginner Contest 006 解説
AtCoder Inc.
AtCoder Beginner Contest 022 解説
AtCoder Beginner Contest 022 解説
AtCoder Inc.
AtCoder Beginner Contest 013 解説
AtCoder Beginner Contest 013 解説
AtCoder Inc.
AtCoder Beginner Contest 020 解説
AtCoder Beginner Contest 020 解説
AtCoder Inc.
AtCoder Regular Contest 036 解説
AtCoder Regular Contest 036 解説
AtCoder Inc.
AtCoder Beginner Contest 011 解説
AtCoder Beginner Contest 011 解説
AtCoder Inc.
AtCoder Regular Contest 046
AtCoder Regular Contest 046
AtCoder Inc.
Recommended
abc027
abc027
AtCoder Inc.
AtCoder Beginner Contest 006 解説
AtCoder Beginner Contest 006 解説
AtCoder Inc.
AtCoder Beginner Contest 022 解説
AtCoder Beginner Contest 022 解説
AtCoder Inc.
AtCoder Beginner Contest 013 解説
AtCoder Beginner Contest 013 解説
AtCoder Inc.
AtCoder Beginner Contest 020 解説
AtCoder Beginner Contest 020 解説
AtCoder Inc.
AtCoder Regular Contest 036 解説
AtCoder Regular Contest 036 解説
AtCoder Inc.
AtCoder Beginner Contest 011 解説
AtCoder Beginner Contest 011 解説
AtCoder Inc.
AtCoder Regular Contest 046
AtCoder Regular Contest 046
AtCoder Inc.
Arc015途中まで解説
Arc015途中まで解説
AtCoder Inc.
AtCoder Beginner Contest 028 解説
AtCoder Beginner Contest 028 解説
AtCoder Inc.
AtCoder Regular Contest 037 解説
AtCoder Regular Contest 037 解説
AtCoder Inc.
AtCoder Regular Contest 042 解説
AtCoder Regular Contest 042 解説
AtCoder Inc.
AtCoder Beginner Contest 018 解説
AtCoder Beginner Contest 018 解説
AtCoder Inc.
AtCoder Regular Contest 016 解説
AtCoder Regular Contest 016 解説
AtCoder Inc.
AtCoder Beginner Contest 021 解説
AtCoder Beginner Contest 021 解説
AtCoder Inc.
AtCoder Beginner Contest 016 解説
AtCoder Beginner Contest 016 解説
AtCoder Inc.
AtCoder Regular Contest 025 解説
AtCoder Regular Contest 025 解説
AtCoder Inc.
DDPC 2016 予選 解説
DDPC 2016 予選 解説
AtCoder Inc.
AtCoder Beginner Contest 030 解説
AtCoder Beginner Contest 030 解説
AtCoder Inc.
AtCoder Beginner Contest 014 解説
AtCoder Beginner Contest 014 解説
AtCoder Inc.
AtCoder Regular Contest 030 解説
AtCoder Regular Contest 030 解説
AtCoder Inc.
AtCoder Regular Contest 049 解説
AtCoder Regular Contest 049 解説
AtCoder Inc.
AtCoder Beginner Contest 003 解説
AtCoder Beginner Contest 003 解説
AtCoder Inc.
AtCoder Beginner Contest 010 解説
AtCoder Beginner Contest 010 解説
AtCoder Inc.
Abc009
Abc009
AtCoder Inc.
AtCoder Beginner Contest 017 解説
AtCoder Beginner Contest 017 解説
AtCoder Inc.
AtCoder Beginner Contest 019 解説
AtCoder Beginner Contest 019 解説
AtCoder Inc.
AtCoder Regular Contest 039 解説
AtCoder Regular Contest 039 解説
AtCoder Inc.
AtCoder Beginner Contest 026 解説
AtCoder Beginner Contest 026 解説
AtCoder Inc.
AtCoder Beginner Contest 024 解説
AtCoder Beginner Contest 024 解説
AtCoder Inc.
More Related Content
What's hot
Arc015途中まで解説
Arc015途中まで解説
AtCoder Inc.
AtCoder Beginner Contest 028 解説
AtCoder Beginner Contest 028 解説
AtCoder Inc.
AtCoder Regular Contest 037 解説
AtCoder Regular Contest 037 解説
AtCoder Inc.
AtCoder Regular Contest 042 解説
AtCoder Regular Contest 042 解説
AtCoder Inc.
AtCoder Beginner Contest 018 解説
AtCoder Beginner Contest 018 解説
AtCoder Inc.
AtCoder Regular Contest 016 解説
AtCoder Regular Contest 016 解説
AtCoder Inc.
AtCoder Beginner Contest 021 解説
AtCoder Beginner Contest 021 解説
AtCoder Inc.
AtCoder Beginner Contest 016 解説
AtCoder Beginner Contest 016 解説
AtCoder Inc.
AtCoder Regular Contest 025 解説
AtCoder Regular Contest 025 解説
AtCoder Inc.
DDPC 2016 予選 解説
DDPC 2016 予選 解説
AtCoder Inc.
AtCoder Beginner Contest 030 解説
AtCoder Beginner Contest 030 解説
AtCoder Inc.
AtCoder Beginner Contest 014 解説
AtCoder Beginner Contest 014 解説
AtCoder Inc.
AtCoder Regular Contest 030 解説
AtCoder Regular Contest 030 解説
AtCoder Inc.
AtCoder Regular Contest 049 解説
AtCoder Regular Contest 049 解説
AtCoder Inc.
AtCoder Beginner Contest 003 解説
AtCoder Beginner Contest 003 解説
AtCoder Inc.
AtCoder Beginner Contest 010 解説
AtCoder Beginner Contest 010 解説
AtCoder Inc.
Abc009
Abc009
AtCoder Inc.
AtCoder Beginner Contest 017 解説
AtCoder Beginner Contest 017 解説
AtCoder Inc.
AtCoder Beginner Contest 019 解説
AtCoder Beginner Contest 019 解説
AtCoder Inc.
AtCoder Regular Contest 039 解説
AtCoder Regular Contest 039 解説
AtCoder Inc.
What's hot
(20)
Arc015途中まで解説
Arc015途中まで解説
AtCoder Beginner Contest 028 解説
AtCoder Beginner Contest 028 解説
AtCoder Regular Contest 037 解説
AtCoder Regular Contest 037 解説
AtCoder Regular Contest 042 解説
AtCoder Regular Contest 042 解説
AtCoder Beginner Contest 018 解説
AtCoder Beginner Contest 018 解説
AtCoder Regular Contest 016 解説
AtCoder Regular Contest 016 解説
AtCoder Beginner Contest 021 解説
AtCoder Beginner Contest 021 解説
AtCoder Beginner Contest 016 解説
AtCoder Beginner Contest 016 解説
AtCoder Regular Contest 025 解説
AtCoder Regular Contest 025 解説
DDPC 2016 予選 解説
DDPC 2016 予選 解説
AtCoder Beginner Contest 030 解説
AtCoder Beginner Contest 030 解説
AtCoder Beginner Contest 014 解説
AtCoder Beginner Contest 014 解説
AtCoder Regular Contest 030 解説
AtCoder Regular Contest 030 解説
AtCoder Regular Contest 049 解説
AtCoder Regular Contest 049 解説
AtCoder Beginner Contest 003 解説
AtCoder Beginner Contest 003 解説
AtCoder Beginner Contest 010 解説
AtCoder Beginner Contest 010 解説
Abc009
Abc009
AtCoder Beginner Contest 017 解説
AtCoder Beginner Contest 017 解説
AtCoder Beginner Contest 019 解説
AtCoder Beginner Contest 019 解説
AtCoder Regular Contest 039 解説
AtCoder Regular Contest 039 解説
Viewers also liked
AtCoder Beginner Contest 026 解説
AtCoder Beginner Contest 026 解説
AtCoder Inc.
AtCoder Beginner Contest 024 解説
AtCoder Beginner Contest 024 解説
AtCoder Inc.
AtCoder Beginner Contest 023 解説
AtCoder Beginner Contest 023 解説
AtCoder Inc.
AtCoder Beginner Contest 029 解説
AtCoder Beginner Contest 029 解説
AtCoder Inc.
指数時間アルゴリズム入門
指数時間アルゴリズム入門
Yoichi Iwata
AtCoderに毎回参加したくなる仕組み
AtCoderに毎回参加したくなる仕組み
AtCoder Inc.
プログラミングコンテストでのデータ構造
プログラミングコンテストでのデータ構造
Takuya Akiba
AtCoder Regular Contest 044 解説
AtCoder Regular Contest 044 解説
AtCoder Inc.
競技プログラミング練習会2015 Normal 第4回
競技プログラミング練習会2015 Normal 第4回
Hideaki Nagamine
AtCoder Beginner Contest 007 解説
AtCoder Beginner Contest 007 解説
AtCoder Inc.
競技プログラミング練習会2015 Normal 第3回
競技プログラミング練習会2015 Normal 第3回
Hideaki Nagamine
Square869120 contest #2
Square869120 contest #2
AtCoder Inc.
abc031
abc031
AtCoder Inc.
競技プログラミング練習会2015 Normal 第2回
競技プログラミング練習会2015 Normal 第2回
Hideaki Nagamine
AtCoder Beginner Contest 002 解説
AtCoder Beginner Contest 002 解説
AtCoder Inc.
動的計画法
動的計画法
HCPC: 北海道大学競技プログラミングサークル
最短経路問題 & 最小全域木
最短経路問題 & 最小全域木
HCPC: 北海道大学競技プログラミングサークル
高速フーリエ変換
高速フーリエ変換
AtCoder Inc.
Viewers also liked
(18)
AtCoder Beginner Contest 026 解説
AtCoder Beginner Contest 026 解説
AtCoder Beginner Contest 024 解説
AtCoder Beginner Contest 024 解説
AtCoder Beginner Contest 023 解説
AtCoder Beginner Contest 023 解説
AtCoder Beginner Contest 029 解説
AtCoder Beginner Contest 029 解説
指数時間アルゴリズム入門
指数時間アルゴリズム入門
AtCoderに毎回参加したくなる仕組み
AtCoderに毎回参加したくなる仕組み
プログラミングコンテストでのデータ構造
プログラミングコンテストでのデータ構造
AtCoder Regular Contest 044 解説
AtCoder Regular Contest 044 解説
競技プログラミング練習会2015 Normal 第4回
競技プログラミング練習会2015 Normal 第4回
AtCoder Beginner Contest 007 解説
AtCoder Beginner Contest 007 解説
競技プログラミング練習会2015 Normal 第3回
競技プログラミング練習会2015 Normal 第3回
Square869120 contest #2
Square869120 contest #2
abc031
abc031
競技プログラミング練習会2015 Normal 第2回
競技プログラミング練習会2015 Normal 第2回
AtCoder Beginner Contest 002 解説
AtCoder Beginner Contest 002 解説
動的計画法
動的計画法
最短経路問題 & 最小全域木
最短経路問題 & 最小全域木
高速フーリエ変換
高速フーリエ変換
Similar to AtCoder Beginner Contest 025 解説
Atcoder Regular Contest 014 解説
Atcoder Regular Contest 014 解説
光喜 濱屋
Kth
Kth
oupc
CODE FESTIVAL 2014 本選 解説
CODE FESTIVAL 2014 本選 解説
AtCoder Inc.
Aizu-2017: B
Aizu-2017: B
HCPC: 北海道大学競技プログラミングサークル
AtCoder Regular Contest 021 解説
AtCoder Regular Contest 021 解説
AtCoder Inc.
2011年12月9日
2011年12月9日
nukaemon
T82 aoitan あおいたんのパズルを数学しましょうか_修正版
T82 aoitan あおいたんのパズルを数学しましょうか_修正版
Masami Yabushita
わんくま勉強会東京#82 あおいたんのパズルを数学しましょうか
わんくま勉強会東京#82 あおいたんのパズルを数学しましょうか
Masami Yabushita
著者:結城 浩-『プログラマの数学』の第8章をスライド資料にしたもの
著者:結城 浩-『プログラマの数学』の第8章をスライド資料にしたもの
Takanori Fukui
Similar to AtCoder Beginner Contest 025 解説
(9)
Atcoder Regular Contest 014 解説
Atcoder Regular Contest 014 解説
Kth
Kth
CODE FESTIVAL 2014 本選 解説
CODE FESTIVAL 2014 本選 解説
Aizu-2017: B
Aizu-2017: B
AtCoder Regular Contest 021 解説
AtCoder Regular Contest 021 解説
2011年12月9日
2011年12月9日
T82 aoitan あおいたんのパズルを数学しましょうか_修正版
T82 aoitan あおいたんのパズルを数学しましょうか_修正版
わんくま勉強会東京#82 あおいたんのパズルを数学しましょうか
わんくま勉強会東京#82 あおいたんのパズルを数学しましょうか
著者:結城 浩-『プログラマの数学』の第8章をスライド資料にしたもの
著者:結城 浩-『プログラマの数学』の第8章をスライド資料にしたもの
More from AtCoder Inc.
TCO2017R1
TCO2017R1
AtCoder Inc.
AtCoder Beginner Contest 035 解説
AtCoder Beginner Contest 035 解説
AtCoder Inc.
Disco Presents ディスカバリーチャンネルプログラミングコンテスト2016 本選 解説
Disco Presents ディスカバリーチャンネルプログラミングコンテスト2016 本選 解説
AtCoder Inc.
Chokudai Contest 001
Chokudai Contest 001
AtCoder Inc.
AtCoder Beginner Contest 034 解説
AtCoder Beginner Contest 034 解説
AtCoder Inc.
AtCoder Regular Contest 048
AtCoder Regular Contest 048
AtCoder Inc.
MUJINプログラミングチャレンジ2016 解説
MUJINプログラミングチャレンジ2016 解説
AtCoder Inc.
AtCoder Beginner Contest 033 解説
AtCoder Beginner Contest 033 解説
AtCoder Inc.
arc047
arc047
AtCoder Inc.
abc032
abc032
AtCoder Inc.
CODE FESTIVAL 2015 沖縄ツアー 解説
CODE FESTIVAL 2015 沖縄ツアー 解説
AtCoder Inc.
CODE FESTIVAL 2015 解説
CODE FESTIVAL 2015 解説
AtCoder Inc.
CODE FESTIVAL 2015 予選B 解説
CODE FESTIVAL 2015 予選B 解説
AtCoder Inc.
AtCoder Regular Contest 045 解説
AtCoder Regular Contest 045 解説
AtCoder Inc.
CODE FESTIVAL 2015 予選A 解説
CODE FESTIVAL 2015 予選A 解説
AtCoder Inc.
天下一プログラマーコンテスト2015 予選B 解説
天下一プログラマーコンテスト2015 予選B 解説
AtCoder Inc.
AtCoder Regular Contest 043 解説
AtCoder Regular Contest 043 解説
AtCoder Inc.
天下一プログラマーコンテスト2015 予選A E問題 解説
天下一プログラマーコンテスト2015 予選A E問題 解説
AtCoder Inc.
More from AtCoder Inc.
(18)
TCO2017R1
TCO2017R1
AtCoder Beginner Contest 035 解説
AtCoder Beginner Contest 035 解説
Disco Presents ディスカバリーチャンネルプログラミングコンテスト2016 本選 解説
Disco Presents ディスカバリーチャンネルプログラミングコンテスト2016 本選 解説
Chokudai Contest 001
Chokudai Contest 001
AtCoder Beginner Contest 034 解説
AtCoder Beginner Contest 034 解説
AtCoder Regular Contest 048
AtCoder Regular Contest 048
MUJINプログラミングチャレンジ2016 解説
MUJINプログラミングチャレンジ2016 解説
AtCoder Beginner Contest 033 解説
AtCoder Beginner Contest 033 解説
arc047
arc047
abc032
abc032
CODE FESTIVAL 2015 沖縄ツアー 解説
CODE FESTIVAL 2015 沖縄ツアー 解説
CODE FESTIVAL 2015 解説
CODE FESTIVAL 2015 解説
CODE FESTIVAL 2015 予選B 解説
CODE FESTIVAL 2015 予選B 解説
AtCoder Regular Contest 045 解説
AtCoder Regular Contest 045 解説
CODE FESTIVAL 2015 予選A 解説
CODE FESTIVAL 2015 予選A 解説
天下一プログラマーコンテスト2015 予選B 解説
天下一プログラマーコンテスト2015 予選B 解説
AtCoder Regular Contest 043 解説
AtCoder Regular Contest 043 解説
天下一プログラマーコンテスト2015 予選A E問題 解説
天下一プログラマーコンテスト2015 予選A E問題 解説
Recently uploaded
生成AIの回答内容の修正を課題としたレポートについて:お茶の水女子大学「授業・研究における生成系AIの活用事例」での講演資料
生成AIの回答内容の修正を課題としたレポートについて:お茶の水女子大学「授業・研究における生成系AIの活用事例」での講演資料
Takayuki Itoh
The_Five_Books_Overview_Presentation_2024
The_Five_Books_Overview_Presentation_2024
koheioishi1
東京工業大学 環境・社会理工学院 建築学系 大学院入学入試・進学説明会2024_v2
東京工業大学 環境・社会理工学院 建築学系 大学院入学入試・進学説明会2024_v2
Tokyo Institute of Technology
ゲーム理論 BASIC 演習106 -価格の交渉ゲーム-#ゲーム理論 #gametheory #数学
ゲーム理論 BASIC 演習106 -価格の交渉ゲーム-#ゲーム理論 #gametheory #数学
ssusere0a682
ゲーム理論 BASIC 演習105 -n人囚人のジレンマモデル- #ゲーム理論 #gametheory #数学
ゲーム理論 BASIC 演習105 -n人囚人のジレンマモデル- #ゲーム理論 #gametheory #数学
ssusere0a682
UniProject Workshop Make a Discord Bot with JavaScript
UniProject Workshop Make a Discord Bot with JavaScript
yuitoakatsukijp
TokyoTechGraduateExaminationPresentation
TokyoTechGraduateExaminationPresentation
YukiTerazawa
Recently uploaded
(7)
生成AIの回答内容の修正を課題としたレポートについて:お茶の水女子大学「授業・研究における生成系AIの活用事例」での講演資料
生成AIの回答内容の修正を課題としたレポートについて:お茶の水女子大学「授業・研究における生成系AIの活用事例」での講演資料
The_Five_Books_Overview_Presentation_2024
The_Five_Books_Overview_Presentation_2024
東京工業大学 環境・社会理工学院 建築学系 大学院入学入試・進学説明会2024_v2
東京工業大学 環境・社会理工学院 建築学系 大学院入学入試・進学説明会2024_v2
ゲーム理論 BASIC 演習106 -価格の交渉ゲーム-#ゲーム理論 #gametheory #数学
ゲーム理論 BASIC 演習106 -価格の交渉ゲーム-#ゲーム理論 #gametheory #数学
ゲーム理論 BASIC 演習105 -n人囚人のジレンマモデル- #ゲーム理論 #gametheory #数学
ゲーム理論 BASIC 演習105 -n人囚人のジレンマモデル- #ゲーム理論 #gametheory #数学
UniProject Workshop Make a Discord Bot with JavaScript
UniProject Workshop Make a Discord Bot with JavaScript
TokyoTechGraduateExaminationPresentation
TokyoTechGraduateExaminationPresentation
AtCoder Beginner Contest 025 解説
1.
ABC025 解説
2.
問題A – 25個の文字列
3.
問題概要 • 長さ 5
の文字列 𝑆 と整数 𝑁 が与えられます。 • 𝑆 に含まれる文字を 2 回選び、長さ 2 の文字列を作成します。 • 考えられうる 25 通りの文字列のうち、辞書順で 𝑁 番目の文字列を 出力してください。 • 1 ≦ 𝑁 ≦ 25 • 𝑆 には 5 種類のアルファベットが使用されており、それらは昇順に並 んでいる。
4.
解法 • 25 通りすべての文字列を生成し、ソートをすることで解くことができ ます。 •
ですが、実際にはソートしなくても答えを計算することができます。 • 答えの文字列を 𝑋 とし、𝑁 − 1 を 5 で割った商と余りをそれぞれ 𝐴 と 𝐵 としたとき、 𝑋 の 1 文字目は 𝑆 の 𝐴 + 1 文字目、 𝑋 の 2 文字目は 𝑆 の 𝐵 + 1 文字目となります (𝑆 内の文字は昇順に並んでいるため)。
5.
問題B – 双子とスイカ割り
6.
問題概要 • 𝑁 個の移動についての情報(東に
3 メートルとか西に 7 メートルとか) が与えられます。 • 𝑁 個の移動後にどこにいるのかを計算してください。 • ただし、移動距離の指定が 𝐴 メートルより少ないなら 𝐴 メートルの移 動に、𝐵 メートルより多いなら 𝐵 メートルの移動に変更されます。 • 1 ≦ 𝑁 ≦ 100 • 1 ≦ 𝐴 ≦ 𝐵 ≦ 100 • 1 ≦ (指定距離) ≦ 100
7.
解法 • 上から順にシミュレートします。 • 西方向へ
𝑋 メートル移動する処理を、東方向へ −𝑋 メートル移動す るとして、現在位置も初期位置から東に 𝑌 メートル(初期位置よりも 西側なら 𝑌 は負の値になる)としておくことで、移動の処理が簡単に なります。
8.
問題C – 双子と○×ゲーム
9.
問題概要 • 3×3 のマス目に交互に○と×を書いていきます。 •
全て埋まった後に、上下あるいは左右で隣接する 2 マスそれぞれに ついて、同じ文字が書かれているか異なる文字が書かれているかを 判定し、同じなら直大くんに、異なるなら直子さんに得点が入ります。 • 両者が最善を尽くしたときのそれぞれの得点を計算してください。 • 1 ≦ 𝑏𝑖,𝑗 ≦ 100 • 1 ≦ 𝑐𝑖,𝑗 ≦ 100
10.
方針 • 1 手目からいきなり
9 手目後の状態を考えるのは大変です。 • 逆に 9 手目から考えてみることにします。 • また、この問題の場合、直大くんの得点と直子さんの得点の合計値 は一定なので、直大くんは score=(直大くんの得点)-(直子さんの得 点)の最大化を、直子さんは score=(直大くんの得点)-(直子さんの得 点)の最小化を目標として行動するものとすれば、扱いが簡単になり ます。
11.
9 手目の状況 • 9
手目において、書くことのできる場所は 1 箇所しか無いので、書く 場所は一意に決まります。 ゲーム終了 : score=10 9手目 : score=? マス (2,3) に書く
12.
9 手目の状況(直大くんの手番) • 9
手目において、書くことのできる場所は 1 箇所しか無いので、書く 場所は一意に決まります。 • そのため、9 手目の得点は、ゲーム終了時の得点と同じになります。 ゲーム終了 : score=10 9手目 : score=10 マス (2,3) に書く
13.
8 手目の状況(直子さんの手番) • 8
手目において、書くことのできる場所は 2 箇所あります。 • それぞれのマスについて、そこに×を置いた際に、9 手目以降がど うなるかは、先ほどの情報より分かります。 8手目 : score=? マス (1,1) に書く 9手目 : score=-209手目 : score=10 マス (2,3) に書く
14.
8 手目の状況(直子さんの手番) • 8
手目において、書くことのできる場所は 2 箇所あります。 • それぞれのマスについて、そこに×を置いた際に、9 手目以降がど うなるかは、先ほどの情報より分かります。 • 直子さんは score を小さくしたいので、遷移可能な点のうち score が 最小な点に遷移すれば良いことになります。その値が 8 手目の score となります。 8手目 : score=-20 マス (1,1) に書く 9手目 : score=-209手目 : score=10 マス (2,3) に書く
15.
7 手目よりも前について • 8
手目の score が分かるので、7 手目、6 手目、…とわかっていきます。 • 最終的に 1 手目において直大くんが置いたときの score が、両者が最善 を尽くしたときの score となります。 • まとめると、以下の再帰関数を実装すると解けます。 1. 現時点で置き場所がないなら、score を直接計算し返します。 2. すべての置き場所に対し、一旦置いてみることにします。 3. 置いた後の score をこの再帰関数を呼び出すことで計算します。 4. 直大くんの手番ならそれらの最大値を、直子さんの手番なら それらの最小値を再帰関数の返り値とします。
16.
備考 • この探索は、ゲーム木の探索です。 • 計算量は
O(𝑁!) (𝑁 は手数)となります。 • 手数が少ないので、特に高速化しなくても計算量的には解けます。 • メモ化再帰をすることで O(2 𝑁 ) にできます。 • ゲーム木の探索アルゴリズムなので、αβ枝刈りなどもできます。
17.
問題D – 25個の整数
18.
問題概要 • 1 から
25 までの整数を 5×5 の盤面に配置します。 • いくつかの整数はどこに置くか決まっています。 • 縦または横に連続する 3 整数をどのようにとってもそれらが昇順ま たは降順になっていない置き方は全部で何通りあるか計算してくだ さい。 • 少なくとも 5 つの整数は置き方が決まっている。
19.
部分点解法 (30点) • すべての置き方を試します。 •
置き方は 𝑁! 通り (𝑁 は空きマスの個数)あり、それぞれ O(𝑁2) で条 件を満たすかか判定できるので、計算量は O(𝑁2 ∗ 𝑁!) となります。 • 空きマスが少ないデータセット 1 なら高速で解けますが、空きマスが 多めのデータセット 2 だとかなりの時間がかかってしまいます。
20.
考察 • 1 から順に置いていくことにします。 •
この場合、どのような条件が満たされたら良くて、どのような条件が 満たされたらダメなのかを考えてみます。
21.
考察 • 今新たに数を置くときに、上下または左右で隣接するマスについて 考えてみます (ここでは例として左右を考えます、上下も同様に処理 できます)。以下の
4 つの場合が考えられます。 • (A) : 左右のうち一方が盤面の外 (端のケース) • (B) : 左右のうち両方が空きマス。 • (C) : 左右のうち一方が埋まっている。 • (D) : 左右のうち両方が埋まっている。 (B) 数 (C) 数 (D) 数(A)
22.
考察 • (A)のケースは、条件に違反することはありません。 • (B)のケースは、今置く数を置いた時点では矛盾しません。真ん中が 最小値です。 •
(C)のケースは、後で空いているマスにより大きい数を置くことになる ので、この時点で矛盾していることが分かります。 • (D)のケースは今置く数を置いた時点では矛盾しません。真ん中が 最大値です。 (B) 数 (C) 数 (D) 数(A)
23.
考察 • 先ほどの (C)
を検出して除外するアルゴリズムだけで、すべての正し い置き方を列挙することができるのでしょうか?
24.
考察 • 先ほどの (C)
を検出して除外するアルゴリズムだけで、すべての正し い置き方を列挙することができるのでしょうか? • →これできちんとチェックできます。なぜなら、連続する 3 マスについ て、それらの大小関係はちょうど 2 個目が置かれたときに定まり、か つダメなケースでは必ず (C) を経由することになるからです。 • 一方で(C)さえ経由しなければ最後まで置けた配置はいずれも条件 を満たします。
25.
満点解法 (30+70点) • もちろん先ほどのチェックを導入してもただすべての置き方をそのま ま試すだけでは、結局
O(𝑁!) 通り見ることになります。 • 重要なこととして、先ほどのチェックに用いたのは、今現在置く数と の大小関係のみなので、既に置いた数同士の大小関係は覚えなく ても良いです。 • そのため、既に置いた場所の集合が同じ状態同士を一緒くたにして 計算することができます。
26.
満点解法 (30+70点) • ここで、bitDP
と呼ばれるアルゴリズムを使用することができます。 • dp[i] = 今現在置かれている数字の配置が整数 i で表されるとき、現 時点で矛盾なく置かれている配置の総数。 • i は 25 ビットの非負整数で、盤面をビットで表します (例えば 10 マス 目が埋まっているなら第 10 ビットが 1 でそうでないなら第 10 ビット が 0)。 • このとき、dp[i]= dp[i−2j−1] ∗ 𝑓(i−2j−1, j)25 j=1 となります。ただし、ここ で 𝑓(i, j) は、i の第 j ビットが 0 であり、状態 i から新たに数を j マス 目においても矛盾しない場合に 1 を、それ以外の場合に 0 を返す関 数とします。また、dp[0]=1 とします。
27.
満点解法 (30+70点) • 先ほどの
bitDP は O(2 𝑁) の計算量で動作します。 • 𝑁 ≦ 20 なので、データセット 2 でも速く動作します。
Download now