1
1

ABC322回答メモ

Last updated at Posted at 2023-09-30

0.はじめに
 久々に、A~Cを快調にクリアでき、1時間以上のこしてDに。
 でもD問題は複雑で、実装は全然間に合わず、結局
 3問でフィニッシュ。
 3問解くスピードはそこそこだったためか、レートは11あがり
 700台に復帰できました。

1.A - First ABC 2
 単純にループしていき、文字列Sの[i:i+3]がABCならi+1を出力し
 終了。最後まで一致しなかったら-1を出力して終了

 https://atcoder.jp/contests/abc322/submissions/46061289

2.B - Prefix and Suffix
 Tをスライスして、先頭N文字・末尾N文字をSと比較して
 出力条件ごとの判定をして出力して終了

 https://atcoder.jp/contests/abc322/submissions/46068301

3.C - Festival
 解説を読むと自分の実装と若干違いました。
  ・変数N,MとリストAを読み込む
  ・変数pを0で初期化
  ・ループを、iが1~Nを取るようにまわす
   ・i日目の値としA[p]-iを表示
   ・i=A[p]の時、pに1加算
 結構すっきりしているのではないかと自負しています。

 https://atcoder.jp/contests/abc322/submissions/46079680

4.D - Polyomino
 問題見ただけでスルーしそうになりましたが、E以降も
 そんなに簡単そうでもなかったので、頑張ってみました。
 結果は1時間以上がんばっても実装しきれませんでした。

 実装しようとしていた考えは、
 1)ブロックを置く順毎にチェック
   (1→2→3、1→3→2、・・・の6種類)
 2)ブロックを置くフィールドを用意し、一番左上から
   ブロックを置いていく
 3)1つ目に置くブロックが、形状的に左上をふさげれば
   置いて、置くフィールドの左上から見ていき空いている
   マスに、2個目のブロックが置けるかを判定しておく・・・
   を繰り返していく、置けなかったらブロックを90度回転して
   繰り返す・・・

 と、ざっくりそんな感じでやっていきましたが
 じかんがたりず、考え方があっているかも判定
 できませんでした。

 時間があったらリベンジしたいところです。

10/4追記

 この問題がどうしても気になって、空いた時間で
 回答を進めてました。

 久々にプログラム設計書的なものまでまで書いてしまいました。

 基本的な考え方は問題なかったのですが
 1個目だけ置いた状態のパレットを
 とっておいて、2個目をいろいろな角度で
 おいていく・・・という過程で、
 なぜか、よけておいたリストも更新されてしまう
 という現象に苦しめられました。

 結局copy.deepcopyでよけておけば
 更新されないことが分かりそれを使って書き直したところ
 ACとなりました。

 https://atcoder.jp/contests/abc322/submissions/46202882

以上

1
1
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
1
1