連続部分文字列B問題の解説です。空でない連続な部分文字列における、文字の種類数の平均を求めてください。右端とする連続部分文字列の文字の種類数の総和が求められると楽そうです。くっつけたものなので、直前の計算結果を利用できそうです。直前の部分文字列と比べて、答えがどのくらい増えるか考えてみましょう。すると、下の図のように増えることが分かります。1個前の同じ文字との距離だけ増えた値が入ることが分かりますね。これが分かれば後はそのまま実装するだけで答えが分かりますね。感想ei1333という答えになる問題が作りたくて作りました。1.333=4/3なので、なんかそれっぽいのにならないかなーって思ったら思いついた問題です。やるだけなので、個人的には★2だと思っていました。まで許容していましたが、テスターに乱択を通されてどうやっても落ちなさそうだったので変えました。マラソン解法が通るのは......うん......。テストケースA問題の解説です。個の数字が与えられる。番目に大きいものを出力せよ。改行区切りではなく空白区切りで与えられた場合、代わりに"assert"を出力せよ。制約まず、改行区切りで正しく与えられた場合の答えを考えてみましょう。全探索するのも一つの手であり、実際に全部のパターンを網羅すれば良さそうです。ここでは、もう少し賢い考え方で解く方法を説明します。ある、つまり全ての値が異なるときを考えます。どちらかの値と等しい場合を考えます。選ぶということに等しいです。等しい値を選ぶようなパターンも存在するため問題がありません。これで全てのパターンを網羅してるので、答えが求まりました。後は改行区切りか空白区切りか判定する方法ですが、一番楽なのは1行読み込んでみる方法ではないでしょうか。1行読み込んでみて、それを空白区切りにsplitできれば"assert"を出力するようにすると楽そうです。感想この問題は、★1の簡単な問題をとりあえず作るか―と思って作ってみました。AtCoderとかでもうっかり改行区切りのテストケースが混入してたとかで問題になったりするので、それをどう対処するかという感じの問題にしてみました。これでC++やJavaなど普段区切り記号を意識しない言語でも判定ができるようになったので、writerをやる人は区切り記号をちゃんとチェックできるようになったと思います。(ほんとか?)なお、かなり問題の制約が意地悪い感じになっていますが、それはこの後の問題も罠があるよーという警告です。全国統一プログラミング王決定戦本戦に参加しました!全国統一プログラミング王決定戦本戦ここでは実際に参加した時の感想などを書いていきます。問題の解説は後日上げます。