LoginSignup
2
0

0.はじめに

 全体的に易しめの問題だった気がする337回でした。
 とはいえ、A~Cは順調に解いたもののDでケアレスミスで大停滞。
 3回もWAをだしてスコアを落としました。
 とはいえ、なんとか、レートは±0で持ちこたえました。

 Eは時間のない中強引にチャレンジしたものの玉砕。
 その後解説を見ながらなんとか解けました。
 Fは解説見ないでも行けそうと取り組みましたが
 最初の印象より複雑で、解説を見ても解き方は
 あってる気がしますが、実装力が追い付かない感じです・・・。

1.A - Scoreboard

 因縁の高橋君対青木君シリーズ。
 入力したXとYを集計し
 最後に判定して結果を出力してAC。

 https://atcoder.jp/contests/abc337/submissions/49436976

2.B - Extended ABC

 B問題と高をくくってとりかかったところ、意外と実装が難しいことに気づきました。
 結局、結構複雑な実装をする羽目になりました。

 【実装】
  前準備として、文字列を先頭から読み、文字と連続する文字数のタプルを
   リストSLに格納する。(よく考えたら文字数は不要でした・・・)
  例)AAABBBCCCCCCC
  →SL=[("A",3),("B",3),("C",7)]
以下、SLの長さ毎に場合分け
len(SL)が4以上の時
 拡張 ABC 文字列の条件下ではSLは最大3組までなので、Noを出力して終了
len(SL)が3の時
 SL[0][0]="A"&SL[1][0]="B"&SL[2][0]="C"を満たせばYesを
満たさなければNoを出力して終了
len(SL)が2の時
 SL[0][0]とSL[1][0]が、AB、AC、BCの組の場合Yesを
満たさなければNoを出力して終了
len(SL)が1の時
 S内はABCしかないという条件下では、必ず拡張 ABC 文字列の条件を
満たすのでYesを出力して終了

 力技でACを頂きました。

 https://atcoder.jp/contests/abc337/submissions/49450281

3.C - Lining Up 2

 問題文を読み解くのに手間取りましたが、実装自体は
 それほど難しくない問題。

 【実装】
  ・準備として、リストを読み、キーにA[i]、値にi(+1)を持つ
  辞書Dを作成し、変数sに-1の位置(i+1)を保持する。
→Dはkeyの次に並んでいる人をValueにセットした辞書
  ・リストansにsをセット
  ・以下をN-1回実施
  ・sにD[s]をセット
・sをansに追加
・ansを出力して終了
  
 https://atcoder.jp/contests/abc337/submissions/49458474

4.D - Cheating Gomoku Narabe

 一目見てスキップしようと思いましたが、そのあとの問題も
 大変そうだったのであきらめて挑戦。
 斜めの判定が無いのが救いでした。

 【考え方】
  ・各行列毎に以下のチェックを行う
  ・先頭から.とoの数を数えてそれぞれ変数cpとcoにセット
  ・cpとcoの合計がKと一致した場合
  →cp個の.をoに変えればK個連続したoを作れる事になる
 ・ansにansとcpの小さい方をセット
 ・ただし、途中にxが出てきたら、cpとcoを0にクリア
・また、cpとcoの合計がKと一致した点から、K個前が
 .だったらcpから、oだったらcoから1をマイナス。
 (尺取法的に参照していく)
  ・最後にansを出力して終了

 理屈は早めに分かったのですが、”cpとcoの合計がKと一致した点からK個前”の 
 計算が間違っていたのに気づかず無駄に3回ほど提出を繰り返してしまいました・・・。

 https://atcoder.jp/contests/abc337/submissions/49499207

以上

2
0
0

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
2
0