することができるのかを考える。総和は好きなように分割できる一方で、分割した2つの数の差の偶奇は1種類のみである。分割の全パターンで、2つの数の差はすべて偶数となる。満たすものを見つければ良い。}}総和は好きなように分割できる一方で、分割した2つの数の差の偶奇は1種類のみである。私は紙に色々書いているうちに「それはそうだ」と納得できる、ぐらいなんですが。変換する(RはいちごでBはブルーベリー)。与えられた情報のエンコーディングここで、与えられた配列の真ん中で分割する。扱いやすくするため、食べられる順番に従うように、左側については元の配列の内側から並ぶように、配列を構築する。この2つの配列に対して、累積和を考える。読み替えることができる。答えは左のインデックス、右のインデックスの和が小さいほど望ましい。(同じ数の累積和というのは、食べ残ったRとBの数の差が同じであり、等価であると言えるから(DPっぽい考え方))。(負数もまとめて入れたかったため)。あとは、あり得る和のパターンの全探索を、左配列基準および右配列基準で2スキャンして、ベストなものを見つける。fmt.Println(ans)}コンテスト後に時間を使って自分で考えた方法ですが、良い解法なのかはわかりません。変換手数も多くてなんかまどろっこしい気がします。editorialが公開された上で、模範解答が面白ければ、そちらも追記するかもしれません。今回はなんとかイーブンに持ち込めました。なんとか粘って今年の残りあと3回のこどふぉで青に持ち込みたいところです。Eがシンプルな見た目で面白そうだったため、近々追記するかもしれません。Suits問題のURL解答2つのセットでジャケットが共通しており、ほかは独立している。作れなくなったら、他方の安い方をできる限り作れば良い。fmt.Println(ans)}これもDiv.2のAの中では大分簡単な方な気がします。初期の個数が偶数のものを反転させれば良い。2つのブロックを反転させるとき、反転させて個数をゼロにしたい方の色のブロックの個数は、2個減る変わらない(1個減って1個増える)のいずれかであることから、依然として偶数のままとなる。初期の個数が偶数の方しか選ぶことが出来ない。}}結構似たような問題は解いた気がするのに、かなり時間がかかってしまいました。Tent問題のURL解答よくよく考えると、学校の1マス左・右・下・上のいずれかにテントを配置するのが最適です。最大となるものを選べばよいです。闇の深いコードを書いてしまいました(なぜ通ったのか)。問題文がいかついと複雑に考えてしまうような気がするので、もうちょっと冷静に問題を俯瞰したいところです。Three問題のURL解答よくよく見ると末尾の2文字だけを見れば判定できるので、そこだけを見れば良い。}}ここまで簡単なAはDiv.3でも見たことがないので新鮮でした。ついて、辞書順最小のものを求める。辞書順で小さければ、それを出力すれば良い。辞書順で大きいのならば、impossibleである。許される制約なので、愚直に考える。末尾までに存在すればそれと入れ替えるようにする。最小のものが複数ある場合は、できる限り後の物を選ぶ必要があることに注意する。}}最初、最小のものを前から選ぶようなコードを書いてしまい、pretest2でWAしてしまって頭を抱えてしまいました。以外何者でもないので、もう少し簡単なものでもいいから文字列問題に取り組むべきだなぁと思いました。長さ以下であるときは素直にシミュレーションができる。文字目までは連続部分文字列が変わらず、長さだけに集中すれば良いからである。達するまでは文字列連結が必要だが、それ以降は不要となる。後は実装を頑張るだけである。res}添字が読みづらくて題意を把握するのに時間がかかってしまいました。(実開発では闇雲に使うと怒られそうですが)。塗りつぶしたい、ということ。存在すればせいぜい4回の動作で塗りつぶしが可能となることを踏まえる。4回それぞれを図示して考えていく。場合はimpossibleである。場合は当然0回である。反対側へ向かう1回の移動で塗りつぶしが可能となる。図に示す矢印の方向に移動を行えば、塗りつぶしが可能であることがわかる。1文字でも存在すれば、3回の移動で済む。いずれにも当てはまらない場合は、はじめの図に示したような4回の移動が必要となる。コンテスト外とはいえ1発で通ったので良かったです(残業後だったので通らなかったらやはり地獄だった)。やっておくべきでした。ブログを報告するスターをつけました引用をストックしましたストック一覧を見る閉じる引用するにはまずログインしてくださいログイン閉じる引用をストックできませんでした。再度お試しください閉じる限定公開記事のため引用できません。