れとろのメモ置場

とあるSEのメモ置場

AtCoder Beginner Contest210

AtCoder Beginner Contest210に参加しました。

結果

A,B,C問題の3問正解でパフォーマンスが640でした。 最近パフォーマンスが悪くて少しずつレーティングが落ちてきてやばい… 時間作って精進したい。

A - Cabbages

問題文の通りに実装する。
値段が変わる境目がAなのでNがA以下かどうかで処理が分岐する。 N \leq Aの時はN \times Xが答えになって、N>Aの時は A \times X + (N-A) \times Yが答えになる。

B - Bouzu Mekuri

文字列Sの中で最初に1がでるのは誰のターンの時かを答える問題。文字列の長さは最大でも 10 ^ {5}なので先頭から順番に見ていっても十分間に合う長さ。結局、文字列Sで最初に1が出るのは先頭から奇数番目なのか偶数番目なのかをもとにその時のプレイヤーの名前を答えれば良い。偶奇の判断は2で割った余りをもとにするれば良い。

C - Colorful Candies

連続するK個分の区間の中で何種類の色があるのかを計算して最大値を答える問題。
区間がK個と固定なので1~K個の区間を最初に確認してそこからは順番に、区間最後尾の要素を削除・区間先頭を1つずらす・区間内で何種類の色があるのかを数える を先頭が数列の最後尾に来るまで繰り返して、要素の種類が最大でいくつになるのかを答えれば良い。
区間で何種類あるのかはC++だったのでmapのsize()とerase()を使って数えたけど、他に賢いやり方がなにかありそう…