0.はじめに
レートの後退に歯止めを掛けたい今日この頃。
気合を入れて取り組みましたが、Cでてこずり
結局2問正解と惨敗。
レートは-23の707とまたまた後退してしまいました。
1. A - I'm a teapot
最後がteaかを判断する問題。
素直に文字列Sから、最後の3文字(N-3文字目以降の3文字)を
取り出して判断する形で解けました。
https://atcoder.jp/contests/abc418/submissions/68312283
2.B - You're a teapot
B問題なので、全ケース総当たりで行けるやろと取り組みました。
【考え方】
・充填率計算の起点を、文字列Sの先頭から後ろから3文字目まで(充填率は3文字ないと測れない為)ずらしつつ調べる
~以下起点毎の処理(起点がtの時のみ処理)~
・起点の次の文字がtの時、x(ソースではc)に2を、違うときは1をセット
・起点から2文字目以降Sの最後まで参照しつつ以下の処理
・参照した文字がtの時cに1加算
・変数ans(初期値0)とCから2を引いた値を起点から参照している文字までの数-1で割った数の
大きい方をansにセット
・最後にansを出力して終了
提出したソースコード的には無駄な判断ももありましたがACとなりました。
https://atcoder.jp/contests/abc418/submissions/68326042
3.C - Flush
Cの割に難しいなと思ったら350点問題。
なんとか時間一杯頑張ったけど、TLEもWAも消せずに終了。
考え方自体はあっていたけど、高速化の工夫が足りなかった感じでした。
【考え方】
・B=1の時は答えは1
・全フレーバーのティーバック数がB以上の場合
答えは、N*(B-1)+1
・一部フレーバー(t)のティーバック数はB未満、かつ一部フレーバーのティーバック(u)がB以上の場合
答えは、tのフレーバーのティーバック数合計+u*(B-1)+1
・全フレーバーのティーバック数がB未満の時、答えは-1
上記考え方の実装として、ティーバック数毎のフレーバー数をリスト化し2分探索で
該当難易度の答えを割り出す方式を実装しましたが、TLEになるわ、WAになるわで終了。
コンテスト後解説を見て、難易度ごとの答えをあらかじめすべて計算しておき
あとは質問毎にそれを出力すればよい事を学びました・・・。
https://atcoder.jp/contests/abc418/submissions/68384689
以上