LoginSignup
0
0

0.はじめに
 久々に企業名を冠していないABCだなーと思いつつ参戦。
 人気企業アンケートの為かな・・・。
 A~Dはとりあえず解けましたが、そこで時間切れ。
 結果として、レートは+1とほぼ変わらずだったので
 他の方もそこそこ行けてたんだろうなと思いました。
 
 対象言語も増えたようですが、Pythonが3種類くらいあって
 しかも並んでないのでなんかよくわかりにくかったです。
 せめてアルファベット順に並ばないのかな・・・。

1.A - 3.14
 最初四捨五入するのかと思い悩みましたが、切り捨てだったので
 単純に与えられた円周率をいい感じでカットして出力してACでした。

 https://atcoder.jp/contests/abc314/submissions/44492973

2.B - Roulette
 なかなか複雑な条件で、出力も
 場合によって2種類必要と、手ごたえのある問題でした。

 実装は、入力しながら
 賭けた出目をキー、賭けた人達のリストを値に持つ辞書ACと
 賭けた人毎のかけた出目の種類数をもつ辞書CNを作成

 Xを入力したあと、XがACにない場合は0を出力して終了
 存在した場合は、値のリストをリストHLに格納

 HLのかけた人毎にACを検索し、各人の出目の種類数をリストHNに格納
 HNの最小値=最小出目の種類数をMinHに格納。

 再度HLリストを頭から見ていき、出目の種類数がMinHと同じである
 賭けた人をリストansに格納

 最後にansの長さと、各値を出力して終了

 提出した際に、ansの長さを出力する必要があることを
 見逃して、WAを出してしまったのが悔やまれます。 

 https://atcoder.jp/contests/abc314/submissions/44503150

3.C - Rotate Colored Subsequence
 一目でTLEが心配される問題。

 キーは色名、値は前回発生したキー色の文字辞書dictを用意
 文字列SとリストCを頭からインデックスをiとして見ていき
 文字列S2に移行していく
  C[i]がdictにない場合
   S2に""を追加
  あった場合
   S2にdict[C[i]]の値を追加
  dict[C[i]]にS[i]を追加
 ここまでで、色毎の先頭の文字は"
"、最後の文字は
 dictに入っている
 そこで、S2を頭からインデックスをiとして見ていき
 文字列ansに移行していく
  S2[i]が"_"の時、ansにdict[C[i]]の値を追加
  それ以外の場合、S2[i]を追加

 この実装で提出したところpypyだとTLEだったので
 Cpythonで提出したところACとなりました。

 D問題で、文字列をリストにする方法を知ったので
 Sをリスト化して改良したところpypyでも楽にACとなりました。

 https://atcoder.jp/contests/abc314/submissions/44514010

 改良版
 https://atcoder.jp/contests/abc314/submissions/44545235

4.D - LOWER
 いかにTLEを回避するか問題だなと思いつつ、さすがに
 文字列の儘は難しいので文字列をリスト化して保持しました。
 (意外と扱いやすいので今後も使っていきます)

 まずはクエリーをリストCに保存しつつ、t1=2と3が最後に出てくる
 箇所を保存します。

 次に、リストCを頭から読んでいき、t1が1の場合は、文字列リストx文字目を
 cに置き換える
 t1が2・3の場合は、それが、最後にで来る箇所と一致する場合のみ
 文字列リスト内のアルファベットの大文字小文字変換を行う

 最後に文字列リストを結合して出力して無事ACでした。
 

 https://atcoder.jp/contests/abc314/submissions/44529944

以上

0
0
1

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
0