0
1

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 1 year has passed since last update.

ABC277回答メモ

Last updated at Posted at 2022-11-13

0.はじめに
 ビギナーとは・・・。。
 と、なるくらいC以降の難易度が高く感じました。
 まぁ私のレベルが低いのかもですが。

1.A - ^{-1}
 リストを配列に入れて、頭からチェックでAC頂けました。

 https://atcoder.jp/contests/abc277/submissions/36409527

2.B - Playing Cards Validation
 【考え方】
  (1)1文字目OK文字の辞書dict1を用意
  (2)2文字目OK文字の辞書dict2を用意
  (3)重複がないかをチェックする辞書dictinを用意
  (4)SiをN回読み込んでいく
   (4-1)Siの一文字目がdict1にあるかチェック
      →なかったら"No"を出力しプログラム終了
   (4-2)Siの2文字目がdict1にあるかチェック
      →なかったら"No"を出力しプログラム終了
   (4-3)Siがdictinにあるかチェック
      →あったら"No"を出力しプログラム終了
      →なかったらdictinにSiを登録
  (5)Siのチェックがすべて通ったら"Yes"を出力しプログラム終了

 解説をみたら正規表現等使うスマートな回答がありましたが
 まぁ、辞書使うのでもいいかなと思いました。

 https://atcoder.jp/contests/abc277/submissions/36417441

3.C - Ladder Takahashi
 初見DPかなと思いましたが、戻るケースもあるなと思うと
 DP初心者には難しいとあきらめモードでした。
 まぁ、よくみると木の探索系であると気づき
 とにかくやってみようと始めました。

 【考え方1】
  (1)全フロアごとにどのフロアへの階段があるかの配列を持つ表Lを作り初期化
  (2)全フロアごとにそのフロアのチェックが終わったかの表Pをつくり初期化
  (3)以下再帰関数chkF(引数nm)を定義
   (3-1)表Lのインデックスnmの表を順に読み込む
    (3-1-1)読み込んだ値:iがチェック済みかをチェック
     (3-1-2)チェック済みでない場合
      →表Pのiをチェック済みに変更
      →chkFを引数iで呼び出し
  -以下メインルーチン-
  (4)A,Bを読み込み、表Lに格納していく
  (5)引数に1をセットしchkFを呼び出し
  (6)表P内でチェック済みとなっている一番大きいフロアを表示して終了

 実装して実行したところ、表Lの定義時にメモリーエラー・・・。
 さすがに、10の9乗の配列をもつ表はきつかったか・・・と方針変更。

 配列を辞書にすれば、大体何とかなるので辞書を採用

 【考え方2】
  (1)フロアをキーに、どのフロアへの階段があるかの配列を値に持つ辞書Lを作り初期化
  (2)チェック済みのフロアをキーに登録する、フロアチェック済み保持辞書Pをつくり初期化
  (3)以下再帰関数chkF(引数nm)を定義
   (3-1)辞書Lのキーnmの値配列を順に読み込む
    (3-1-1)読み込んだ値:iがP表示あるか(チェック済みか)をチェック
     (3-1-2)チェック済みでない場合
      →表Pにiを登録
      →chkFを引数iで呼び出し
  -以下メインルーチン-
  (4)A,Bを読み込み、表Lに格納していく
  (5)引数に1をセットしchkFを呼び出し
  (6)表PのMAXキーを表示

 例題は難なくACが出たので、提出したところ、半分RE。
 いろいろ試したけど分からないので、諦める・・・

 と、思いましたが実装内容からREになるケースは再帰上限オーバーだな・・・と推察。
 再帰上限オーバーのなんか素晴らしい回避策ロジックがないかをぐぐる。
 
 いいロジックはなかったけど、再帰上限パラメータを書き換えることができることが分かる。

import sys
import resource
sys.setrecursionlimit(200000)

 Atcoderでは認められないだろうな・・・・と思いつつ
 テストケースで試すと通った・・・。

 そのまま提出するとみごとAC。 
 何か反則っぽいけどまぁ良しとしました・・・。

 https://atcoder.jp/contests/abc277/submissions/36448092

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

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?