AtCoder Beginner Contest 314をPythonで解く

投稿日: 

Atcoder Python

B!
Daniel AgreloによるPixabay(https://pixabay.com/)からの画像

こんにちは, Shinoryoです.

今回はAtCoder Beginner Contest 314を, Pythonで解いてみた結果を書き連ねていこうと思います.

A - 3.14

問題文で与えられている円周率の文字列をスライスして出力すればよいです.

B - Roulette

実装方針は, 例えば以下のようになります.

  1. $X$に賭けている人を対象に, 賭けた目の個数の最小値$C_{\mathrm{min}}$を調べる.
  2. $X$に賭けていて, 賭けた目の個数が$C_{\mathrm{min}}$である人を$\mathrm{ans}$に格納する.
  3. $\mathrm{ans}$の要素数とその要素を出力する.

C - Rotate Colored Subsequence

色別に文字列をrotateさせればよいです. 「色$C_i$が塗られている文字の, 文字列$S$におけるインデックス」をあらかじめ調べておくと, 後の処理が楽になります.

D - LOWER

クエリを愚直に実行するだけでは, TLEです.

ここでは, 全体に対する操作を別に考えることが必要です. 個々の文字が最後に変換された時刻と全体の大小が最後に変換された時刻を記録しておき, 個々の文字の変換の後に全体の大小の変換が記録されている場合, 大小変換を行うことにします.

E以降

E以降は私の能力不足故に省略いたします.

参考にしたサイト等