Submit Search
Upload
AtCoder Regular Contest 019 解説
•
0 likes
•
4,736 views
A
AtCoder Inc.
Follow
AtCoder Regular Contest 019 解説
Read less
Read more
Education
Report
Share
Report
Share
1 of 34
Download now
Download to read offline
Recommended
AtCoder Beginner Contest 017 解説
AtCoder Beginner Contest 017 解説
AtCoder Inc.
AtCoder Regular Contest 018 解説
AtCoder Regular Contest 018 解説
AtCoder Inc.
AtCoder Regular Contest 044 解説
AtCoder Regular Contest 044 解説
AtCoder Inc.
AtCoder Beginner Contest 025 解説
AtCoder Beginner Contest 025 解説
AtCoder Inc.
abc027
abc027
AtCoder Inc.
AtCoder Regular Contest 031 解説
AtCoder Regular Contest 031 解説
AtCoder Inc.
AtCoder Beginner Contest 024 解説
AtCoder Beginner Contest 024 解説
AtCoder Inc.
AtCoder Beginner Contest 008 解説
AtCoder Beginner Contest 008 解説
AtCoder Inc.
Recommended
AtCoder Beginner Contest 017 解説
AtCoder Beginner Contest 017 解説
AtCoder Inc.
AtCoder Regular Contest 018 解説
AtCoder Regular Contest 018 解説
AtCoder Inc.
AtCoder Regular Contest 044 解説
AtCoder Regular Contest 044 解説
AtCoder Inc.
AtCoder Beginner Contest 025 解説
AtCoder Beginner Contest 025 解説
AtCoder Inc.
abc027
abc027
AtCoder Inc.
AtCoder Regular Contest 031 解説
AtCoder Regular Contest 031 解説
AtCoder Inc.
AtCoder Beginner Contest 024 解説
AtCoder Beginner Contest 024 解説
AtCoder Inc.
AtCoder Beginner Contest 008 解説
AtCoder Beginner Contest 008 解説
AtCoder Inc.
AtCoder Regular Contest 040 解説
AtCoder Regular Contest 040 解説
AtCoder Inc.
AtCoder Beginner Contest 022 解説
AtCoder Beginner Contest 022 解説
AtCoder Inc.
AtCoder Beginner Contest 023 解説
AtCoder Beginner Contest 023 解説
AtCoder Inc.
AtCoder Regular Contest 026 解説
AtCoder Regular Contest 026 解説
AtCoder Inc.
双対性
双対性
Yoichi Iwata
AtCoder Beginner Contest 006 解説
AtCoder Beginner Contest 006 解説
AtCoder Inc.
AtCoder Beginner Contest 026 解説
AtCoder Beginner Contest 026 解説
AtCoder Inc.
CODE FESTIVAL 2015 予選A 解説
CODE FESTIVAL 2015 予選A 解説
AtCoder Inc.
AtCoder Beginner Contest 021 解説
AtCoder Beginner Contest 021 解説
AtCoder Inc.
AtCoder Beginner Contest 005 解説
AtCoder Beginner Contest 005 解説
AtCoder Inc.
プログラミングコンテストでの乱択アルゴリズム
プログラミングコンテストでの乱択アルゴリズム
Takuya Akiba
AtCoder Regular Contest 039 解説
AtCoder Regular Contest 039 解説
AtCoder Inc.
CODE FESTIVAL 2014 本選 解説
CODE FESTIVAL 2014 本選 解説
AtCoder Inc.
AtCoder Regular Contest 043 解説
AtCoder Regular Contest 043 解説
AtCoder Inc.
CODE FESTIVAL 予選B 解説
CODE FESTIVAL 予選B 解説
AtCoder Inc.
AtCoder Regular Contest 033 解説
AtCoder Regular Contest 033 解説
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 021 解説
AtCoder Regular Contest 021 解説
AtCoder Inc.
Abc009
Abc009
AtCoder Inc.
DDPC 2016 予選 解説
DDPC 2016 予選 解説
AtCoder Inc.
CODE FESTIVAL 2014 エキシビジョン 解説
CODE FESTIVAL 2014 エキシビジョン 解説
AtCoder Inc.
More Related Content
What's hot
AtCoder Regular Contest 040 解説
AtCoder Regular Contest 040 解説
AtCoder Inc.
AtCoder Beginner Contest 022 解説
AtCoder Beginner Contest 022 解説
AtCoder Inc.
AtCoder Beginner Contest 023 解説
AtCoder Beginner Contest 023 解説
AtCoder Inc.
AtCoder Regular Contest 026 解説
AtCoder Regular Contest 026 解説
AtCoder Inc.
双対性
双対性
Yoichi Iwata
AtCoder Beginner Contest 006 解説
AtCoder Beginner Contest 006 解説
AtCoder Inc.
AtCoder Beginner Contest 026 解説
AtCoder Beginner Contest 026 解説
AtCoder Inc.
CODE FESTIVAL 2015 予選A 解説
CODE FESTIVAL 2015 予選A 解説
AtCoder Inc.
AtCoder Beginner Contest 021 解説
AtCoder Beginner Contest 021 解説
AtCoder Inc.
AtCoder Beginner Contest 005 解説
AtCoder Beginner Contest 005 解説
AtCoder Inc.
プログラミングコンテストでの乱択アルゴリズム
プログラミングコンテストでの乱択アルゴリズム
Takuya Akiba
AtCoder Regular Contest 039 解説
AtCoder Regular Contest 039 解説
AtCoder Inc.
CODE FESTIVAL 2014 本選 解説
CODE FESTIVAL 2014 本選 解説
AtCoder Inc.
AtCoder Regular Contest 043 解説
AtCoder Regular Contest 043 解説
AtCoder Inc.
CODE FESTIVAL 予選B 解説
CODE FESTIVAL 予選B 解説
AtCoder Inc.
AtCoder Regular Contest 033 解説
AtCoder Regular Contest 033 解説
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 021 解説
AtCoder Regular Contest 021 解説
AtCoder Inc.
Abc009
Abc009
AtCoder Inc.
What's hot
(20)
AtCoder Regular Contest 040 解説
AtCoder Regular Contest 040 解説
AtCoder Beginner Contest 022 解説
AtCoder Beginner Contest 022 解説
AtCoder Beginner Contest 023 解説
AtCoder Beginner Contest 023 解説
AtCoder Regular Contest 026 解説
AtCoder Regular Contest 026 解説
双対性
双対性
AtCoder Beginner Contest 006 解説
AtCoder Beginner Contest 006 解説
AtCoder Beginner Contest 026 解説
AtCoder Beginner Contest 026 解説
CODE FESTIVAL 2015 予選A 解説
CODE FESTIVAL 2015 予選A 解説
AtCoder Beginner Contest 021 解説
AtCoder Beginner Contest 021 解説
AtCoder Beginner Contest 005 解説
AtCoder Beginner Contest 005 解説
プログラミングコンテストでの乱択アルゴリズム
プログラミングコンテストでの乱択アルゴリズム
AtCoder Regular Contest 039 解説
AtCoder Regular Contest 039 解説
CODE FESTIVAL 2014 本選 解説
CODE FESTIVAL 2014 本選 解説
AtCoder Regular Contest 043 解説
AtCoder Regular Contest 043 解説
CODE FESTIVAL 予選B 解説
CODE FESTIVAL 予選B 解説
AtCoder Regular Contest 033 解説
AtCoder Regular Contest 033 解説
AtCoder Regular Contest 042 解説
AtCoder Regular Contest 042 解説
AtCoder Beginner Contest 018 解説
AtCoder Beginner Contest 018 解説
AtCoder Regular Contest 021 解説
AtCoder Regular Contest 021 解説
Abc009
Abc009
Similar to AtCoder Regular Contest 019 解説
DDPC 2016 予選 解説
DDPC 2016 予選 解説
AtCoder Inc.
CODE FESTIVAL 2014 エキシビジョン 解説
CODE FESTIVAL 2014 エキシビジョン 解説
AtCoder Inc.
CODE FESTIVAL 2015 予選B 解説
CODE FESTIVAL 2015 予選B 解説
AtCoder Inc.
CODE THANKS FESTIVAL 2014 A日程 解説
CODE THANKS FESTIVAL 2014 A日程 解説
AtCoder Inc.
2011年11月11日
2011年11月11日
nukaemon
動的計画法を極める!
動的計画法を極める!
HCPC: 北海道大学競技プログラミングサークル
Icml yomikai 07_16
Icml yomikai 07_16
Yo Ehara
AtCoder Regular Contest 046
AtCoder Regular Contest 046
AtCoder Inc.
AtCoder Beginner Contest 009 解説
AtCoder Beginner Contest 009 解説
AtCoder Inc.
Math tutorial public
Math tutorial public
Kenta Oono
mathemaical_notation
mathemaical_notation
Kenta Oono
Ruby紹介3(pdf)
Ruby紹介3(pdf)
Gohryuh
暗認本読書会13 advanced
暗認本読書会13 advanced
MITSUNARI Shigeo
ウェーブレット木の世界
ウェーブレット木の世界
Preferred Networks
AtCoder Beginner Contest 029 解説
AtCoder Beginner Contest 029 解説
AtCoder Inc.
文字列処理
文字列処理
Ryunosuke Iwai
AtCoder Regular Contest 045 解説
AtCoder Regular Contest 045 解説
AtCoder Inc.
5 Info Theory
5 Info Theory
melvincabatuan
Introduction to Locally Testable Codes and Related Topics (in Japanese)
Introduction to Locally Testable Codes and Related Topics (in Japanese)
Nobutaka Shimizu
Algebraic DP: 動的計画法を書きやすく
Algebraic DP: 動的計画法を書きやすく
Hiromi Ishii
Similar to AtCoder Regular Contest 019 解説
(20)
DDPC 2016 予選 解説
DDPC 2016 予選 解説
CODE FESTIVAL 2014 エキシビジョン 解説
CODE FESTIVAL 2014 エキシビジョン 解説
CODE FESTIVAL 2015 予選B 解説
CODE FESTIVAL 2015 予選B 解説
CODE THANKS FESTIVAL 2014 A日程 解説
CODE THANKS FESTIVAL 2014 A日程 解説
2011年11月11日
2011年11月11日
動的計画法を極める!
動的計画法を極める!
Icml yomikai 07_16
Icml yomikai 07_16
AtCoder Regular Contest 046
AtCoder Regular Contest 046
AtCoder Beginner Contest 009 解説
AtCoder Beginner Contest 009 解説
Math tutorial public
Math tutorial public
mathemaical_notation
mathemaical_notation
Ruby紹介3(pdf)
Ruby紹介3(pdf)
暗認本読書会13 advanced
暗認本読書会13 advanced
ウェーブレット木の世界
ウェーブレット木の世界
AtCoder Beginner Contest 029 解説
AtCoder Beginner Contest 029 解説
文字列処理
文字列処理
AtCoder Regular Contest 045 解説
AtCoder Regular Contest 045 解説
5 Info Theory
5 Info Theory
Introduction to Locally Testable Codes and Related Topics (in Japanese)
Introduction to Locally Testable Codes and Related Topics (in Japanese)
Algebraic DP: 動的計画法を書きやすく
Algebraic DP: 動的計画法を書きやすく
More from AtCoder Inc.
TCO2017R1
TCO2017R1
AtCoder Inc.
AtCoderに毎回参加したくなる仕組み
AtCoderに毎回参加したくなる仕組み
AtCoder Inc.
Square869120 contest #2
Square869120 contest #2
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 Regular Contest 049 解説
AtCoder Regular Contest 049 解説
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.
abc031
abc031
AtCoder Inc.
CODE FESTIVAL 2015 解説
CODE FESTIVAL 2015 解説
AtCoder Inc.
AtCoder Beginner Contest 030 解説
AtCoder Beginner Contest 030 解説
AtCoder Inc.
AtCoder Beginner Contest 028 解説
AtCoder Beginner Contest 028 解説
AtCoder Inc.
天下一プログラマーコンテスト2015 予選B 解説
天下一プログラマーコンテスト2015 予選B 解説
AtCoder Inc.
天下一プログラマーコンテスト2015 予選A E問題 解説
天下一プログラマーコンテスト2015 予選A E問題 解説
AtCoder Inc.
More from AtCoder Inc.
(20)
TCO2017R1
TCO2017R1
AtCoderに毎回参加したくなる仕組み
AtCoderに毎回参加したくなる仕組み
Square869120 contest #2
Square869120 contest #2
AtCoder Beginner Contest 035 解説
AtCoder Beginner Contest 035 解説
Disco Presents ディスカバリーチャンネルプログラミングコンテスト2016 本選 解説
Disco Presents ディスカバリーチャンネルプログラミングコンテスト2016 本選 解説
Chokudai Contest 001
Chokudai Contest 001
AtCoder Regular Contest 049 解説
AtCoder Regular Contest 049 解説
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 沖縄ツアー 解説
abc031
abc031
CODE FESTIVAL 2015 解説
CODE FESTIVAL 2015 解説
AtCoder Beginner Contest 030 解説
AtCoder Beginner Contest 030 解説
AtCoder Beginner Contest 028 解説
AtCoder Beginner Contest 028 解説
天下一プログラマーコンテスト2015 予選B 解説
天下一プログラマーコンテスト2015 予選B 解説
天下一プログラマーコンテスト2015 予選A E問題 解説
天下一プログラマーコンテスト2015 予選A E問題 解説
Recently uploaded
リアル戦国探究in米沢 当日講座3スライド(スタッフ共有用)『糧は三度はさいせず』についてのスライド
リアル戦国探究in米沢 当日講座3スライド(スタッフ共有用)『糧は三度はさいせず』についてのスライド
Ken Fukui
TEAMIN Service overview for customer_20240422.pdf
TEAMIN Service overview for customer_20240422.pdf
yukisuga3
リアル戦国探究in米沢 当日講座1(スタッフ共有用)『兵は詐をもって立つ』についてのスライド
リアル戦国探究in米沢 当日講座1(スタッフ共有用)『兵は詐をもって立つ』についてのスライド
Ken Fukui
リアル戦国探究in米沢 事前講座1スライド(スタッフ共有用)『川中島の謎』についてのスライド
リアル戦国探究in米沢 事前講座1スライド(スタッフ共有用)『川中島の謎』についてのスライド
Ken Fukui
【ゲーム理論入門】ChatGPTが作成した ゲーム理論の問題を解く #3 Slide
【ゲーム理論入門】ChatGPTが作成した ゲーム理論の問題を解く #3 Slide
ssusere0a682
リアル戦国探究in米沢 事前講座2スライド(スタッフ共有用)『両雄の強さの秘密』についてのスライド
リアル戦国探究in米沢 事前講座2スライド(スタッフ共有用)『両雄の強さの秘密』についてのスライド
Ken Fukui
ゲーム理論 BASIC 演習105 -n人囚人のジレンマモデル- #ゲーム理論 #gametheory #数学
ゲーム理論 BASIC 演習105 -n人囚人のジレンマモデル- #ゲーム理論 #gametheory #数学
ssusere0a682
リアル戦国探究in米沢 当日講座2スライド(スタッフ共有用)『人を致すも人に致されず』についてのスライド
リアル戦国探究in米沢 当日講座2スライド(スタッフ共有用)『人を致すも人に致されず』についてのスライド
Ken Fukui
Recently uploaded
(8)
リアル戦国探究in米沢 当日講座3スライド(スタッフ共有用)『糧は三度はさいせず』についてのスライド
リアル戦国探究in米沢 当日講座3スライド(スタッフ共有用)『糧は三度はさいせず』についてのスライド
TEAMIN Service overview for customer_20240422.pdf
TEAMIN Service overview for customer_20240422.pdf
リアル戦国探究in米沢 当日講座1(スタッフ共有用)『兵は詐をもって立つ』についてのスライド
リアル戦国探究in米沢 当日講座1(スタッフ共有用)『兵は詐をもって立つ』についてのスライド
リアル戦国探究in米沢 事前講座1スライド(スタッフ共有用)『川中島の謎』についてのスライド
リアル戦国探究in米沢 事前講座1スライド(スタッフ共有用)『川中島の謎』についてのスライド
【ゲーム理論入門】ChatGPTが作成した ゲーム理論の問題を解く #3 Slide
【ゲーム理論入門】ChatGPTが作成した ゲーム理論の問題を解く #3 Slide
リアル戦国探究in米沢 事前講座2スライド(スタッフ共有用)『両雄の強さの秘密』についてのスライド
リアル戦国探究in米沢 事前講座2スライド(スタッフ共有用)『両雄の強さの秘密』についてのスライド
ゲーム理論 BASIC 演習105 -n人囚人のジレンマモデル- #ゲーム理論 #gametheory #数学
ゲーム理論 BASIC 演習105 -n人囚人のジレンマモデル- #ゲーム理論 #gametheory #数学
リアル戦国探究in米沢 当日講座2スライド(スタッフ共有用)『人を致すも人に致されず』についてのスライド
リアル戦国探究in米沢 当日講座2スライド(スタッフ共有用)『人を致すも人に致されず』についてのスライド
AtCoder Regular Contest 019 解説
1.
AtCoder Regular Contest
019 解説
2.
A問題 お買い物クライシス
3.
A - 問題概要 問題 数字の一部がアルファベットに置き換わった 文字列
S が与えられる。 元の数を復元せよ。 制限 1 ≦ (S の文字数) ≦ 8 アルファ ベット 数字 O 0 D 0 I 1 Z 2 S 5 B 8
4.
A - 解き方 1.
文字列 S を入力する 2. S を 1 文字目から順に見ていく 3. 各文字について、 ・数字ならばそのまま出力し ・アルファベットならば対応する数字を出力する
5.
A - チェックポイント 1.
文字列 S を入力する 2. S を 1 文字目から順に見ていく 3. 各文字について、 ・数字ならばそのまま出力し ・アルファベットならば対応する数字を出力する 文字列の入出力や扱い方については 使っている言語ごとに調べよう if 文などでそのつど調べてもよし あらかじめ文字変換のハッシュテーブルを用意するもよし
6.
B問題 こだわりの名前
7.
B - 問題概要 問題 英大文字からなる名前
A が与えられる。 これを 1 文字だけ別のアルファベットに変換して 作れる回文でない文字列は何個あるか? 制限 1 ≦ (A の文字数) ≦ 3×105
8.
B - 考えよう まずはじめに 書かれていることをそのまま計算することはできる →1文字の変更を全部試して、回文かどうか判定する 計算量は? ・変更候補が
25 × N ≦ 7,500,000 通り ・回文かを試すのに O(N) 時間 → 25 × N × N ≦ 2,250,000,000,000 ≒ 2 × 1012 はとうてい 2 秒では無理……
9.
B - そもそも回文とは? 「前から読んでも後ろから読んでも同じ」とは 結局どういうことなのか? R
A C E C A R 「線で結ばれた文字(以降ではペアと呼ぶ)が同じ」 なら回文!
10.
B - 解き方(1/2) 文字数が奇数のとき 真ん中の文字は何でも良い ・元の文字列が回文なら、真ん中の文字を変えても回文 ・元の文字列が回文でないなら、真ん中の文字を変えても回文でない →真ん中の文字は後で考える(文字数が偶数の場合に帰着) 文字数が偶数のとき すべてのペアの文字が一致していれば回文 →文字が一致しているペアの数に注目しよう
11.
B - 解き方(2/2) 重要な考察 1
文字の変更では「文字が一致するペアの数」は 1 増えるか、1 減るか、そのままか のいずれかである。 (1 文字しか変えてないのだから、当たり前) これにより、1 文字変更した後の回文の判定が O(1) の計算量でできるようになる! →これなら時間制限にも間に合う
12.
C 問題 最後の森 解説担当:城下
慎也 (@phidnight)
13.
はじめに • この問題において入力に不備が見つかった ため、ノーコンテストとなってしまい、誠に申し 訳ありませんでした。 • このようなことが再び起こらないように今後も 気をつけていきたいと思います。
14.
概要 • R*C のマス目が与えられる。 •
村→ほこら→城 の経路で長さ最小なものを考 えたい。 • 途中にいる敵は K 体まで倒すことができる。 • 一度倒した敵は復活しない。
15.
倒す敵が決まると? • 最短経路問題を 2
回解くことで解が得られる ようになる。 • ただ、敵の総数を E としたとき、 𝐶 𝐾𝐸 だけ組み 合わせを試さなければならないので指数オー ダー。 • DP を使おうにも、倒した敵が復活しないとこ ろを情報としてうまく保存するのが難しい。 • まずは多項式解法を求めよう!
16.
指数を回避するために • 倒した敵を情報として持たないようにしたい。 • すべての経路ではなく、最適性を維持したま ま、うまく状態を持てるような経路だけを考え たい。 •
必要な経路を厳選しよう!
17.
考察1 • 中継地点に行った後に、来た道を直接戻らず に途中で合流する経路は考えなくても良い。 • 次のどちらかが、敵の数、長さを増やさない、 別の経路であるといえる。 or
18.
考察2 • 来た道を戻る操作を止めた後は、同じ道を通 らないとしてもよい。 • 次のどちらかが、敵の数、長さを増やさない 経路といえる。 or
19.
考察まとめ • 以上より、経路として、 村→三叉路点X→ほこら→三叉路点X →城 だけを考えれえば良い。 •
村→三叉路、三叉路↔ほこら、三叉路→城と わけて、それぞれを足し合わせれば良い。 (この方針で多項式解法) X
20.
多項式解法その1 • X の場所を固定する。 •
dp[i][j]=(X からマス i に、合計戦闘回数が j 回以下で 移動するのに必要な最小移動回数) というdpを計算する。 • BFSを用いて、それぞれのマスに対し O(RCK) で計算す ることができる。 • a+b+c≦K (a,b,c≧0)に対して、 Xに敵がいない:dp[村][a]+2*dp[ほこら][b]+dp[城][c] Xに敵がいる:dp[村][a]+2*dp[ほこら][b-1]+dp[城][c-1] (b,c≧1) で解が計算できる。
21.
多項式解法その1 • dpの計算に O(RCK)
かかり、 • すべての a,b,c の組を試すのに O(𝐾3 )かかる ので、各 X に対し全体で O(RCK+𝐾3 ) • 全体でO(𝑅2 𝐶2 𝐾 + 𝑅𝐶𝐾3 ) • この解法だとTLEしてしまう。
22.
多項式解法その2 • 発想を逆にして、 • dp1[i][j]=(村
からマス i に、合計戦闘回数が j 回以下で移 動するのに必要な最小移動回数) • dp2[i][j]=(ほこらからマス i に、合計戦闘回数が j 回以下で 移動するのに必要な最小移動回数) • dp3[i][j]=(城からマス i に、合計戦闘回数が j 回以下で移 動するのに必要な最小移動回数) • とすれば、 各Xおよびa+b+c≦K (a,b,c≧0)に対して、 • 敵がいない場合:dp1[X][a]+2*dp2[X][b]+dp3[X][c] 敵がいる場合:dp1[X][a]+2*dp2[X][b-1] +dp3[X][c-1](b,c≧1) で最適解が計算できる。
23.
多項式解法その2 • すべての a,b,c
に対して動かすのではなく、 • v[x]:(x=a+bとなる場合のdp1+2*dp2の最小 値) • w[y]=(y=x+cとなる場合のv+dp3の最小値) と 2 段階に分けて計算すれば、O(𝐾2 )で最適 解を計算できる。 • 全体で O(𝑅𝐶𝐾2 ) となって満点が得られる。
24.
D 問題 ほんとうのたたかい 解説担当:城下
慎也 (@phidnight)
25.
概要 • N*N のフィールドの上にいくつか
O を置く。 • 4 つの隅が軸に平行な長方形とならないよう に配置する。 • できるだけ多く O を配置したい。 • 2≦N≦150
26.
部分点1 • 5 点解法
(“.”を”X”に置き換えています) OOO…O OXX…X OXX…X : : OXX…X
27.
部分点2 • 10 点解法
(“.”を”X”に置き換えています) XOO…O OOX…X OXO…X : : OXX…O
28.
部分点3 • それ以上を得たい場合 • ランダムに置くと強い •
うまく貪欲にすると強い • 焼きなますと強い • etc… • 満点を得たい場合は?
29.
考察 • そもそも理論的にはどれくらい置けるだろう? • 長方形が成立する条件を考えると、 •
長方形が成立する⇔ (i,j), (i,l), (k,j), (k,l) のい ずれにも O があるような i<k , j<l が存在する • 各行 p ごとに、(p,q) と (p,r) (q<r) のいずれに も O があるなら、(q,r) というペアを保存する、 という処理を行うと、上記の条件が成立する 場合に、i 行目と k 行目でペア (j,l) が保存さ れることになる。
30.
考察 • このように考えると、実は 長方形が成立する⇔同じペアが複数出てくる • という式が成立することになる。 •
裏を返すと、同じペアは高々 1 回しか出ないこと になる。 • ペアの総数は N(N-1)/2 個であり、ある行に m 個 あればペアの数が m(m-1)/2 だけ減るので、 • N(N-1)/2 ≦ 𝑚𝑖(𝑚𝑖 − 1)/2𝑁 𝑖=1 が成立する。ただし𝑚𝑖は 𝑖 行目の O の総数。
31.
考察 • 右辺の式は𝑚𝑖のばらつきが少ないほど 𝑚𝑖 𝑁 𝑖=1 が一定の場合に小さくなる。 •
置ける O の最大数はおよそ𝑁 𝑁 個となる。 • このこと (できるだけまばらに置く) を踏まえる と良い解が得られる。
32.
N=p*p (p:素数) のとき •
このときに p*p*p 個の O を置く配置を発見す る。 ※素数のほうが作りやすいので、素数にしてい ます。 • 例: 第 p*(i-1)+j (1≦i,j≦p) 行目の、 p*(k-1)+1 から p*k 列(1≦k≦p)までの範囲には、 i*k+j を p で割った余りを q としたとき、 (p*(i-1)+j, p*(k-1)+1+q) にのみ O を置く。
33.
p=3 の場合の例 OXXOXXOXX XOXXOXXOX XXOXXOXXO OXXXOXXXO XOXXXOOXX このようになります。 XXOOXXXOX OXXXXOXOX XOXOXXXXO XXOXOXOXX
34.
100点解法例 • さっきの p
を p=11 とすれば S=1331 が得られ る。 • しかしながら 150 に対しては未使用な部分が 存在する。 • そこで p=13 として、左上の 150*150 の領域 を取り出すことにすれば良い。 • 結果、S=1700超となり、100点が得られる。
Download now