競プロ弱者の解答

競プロ弱者の成長記録

三井住友信託銀行プログラミングコンテスト2019:元水色競プロerのムーブ備忘録(脅威のトラブル対応力)

 今回のタイトルは良く見ると、水色・・となっています。

 前回の競プロ記事ABC144:水色競プロerのムーブ備忘録(爆死) - 競プロ弱者の解答の後にさらに2回爆死して緑に落ち、ついでにもう一回レートを下げて開始時点のレートは1182。

 一回で水色復帰が狙えるレートではあるのですが、writerが競プロ界隈で有名な双子さん達。何故か彼らが作る問題と相性が悪く、毎回30以上レートを削られてしまいます。

 でも、そんなことを気にしていたら、コンテストに出られません!

 いつも通りpaiza.ioを開いて準備OK!

 苦手意識を払拭してコンテスト参加です。

 

〇コンテスト名:三井住友信託銀行プログラミングコンテスト2019

〇配点          A:100 B:200 C:300 D:400 E:500 F:600

〇制限時間  100分

 配点も時間もいつも通りのABCです。

〇コンテスト開始時のsyunsukeのレート 1293

〇今回の方針 

 基本的に前から解く。

 ハマってしまったら、飛ばして次の問題に進むが、順位表を時々チェック。

 解いた人が多い問題を解く。

 

コンテスト開始!

A:M1とM2を比べれば良いですね。

 M1,D1=map(int,input().split())

    M2,D2=map(int,input().split())

    if M1==M2:

        print(0)

    else:

        print(1)

    一応テストケースを確認して、、、あれ?ちょっとpaiza.io重い?

 テストケースが通るのを確認できたので提出

 2:01 AC

B:Nを1.08で割って、切り捨てて、その数字に1.08を掛けて切り捨てて・・

 これは整数にする部分を間違うと危ない算数問題だ・・

 なんて危険なB問題だ・・

 問題文をもう一度・・入力は50000まで。制約は甘め?そりゃB問題だから・・

 いやこれ全探索

 for ループでnを1から増やしながら50000まで試して、答えがあればそれを出力、無ければあの変な顔文字:(を出力。

 それがわかれば簡単ですね。

 X=int(input())

    for n in range(1,X+1):

        if int(n*1.08)==X:

            print(n)

            exit() #答えを見つけたら強制終了(2つ以上出力されてWAになったら大変)

    print(":(")

    間違うアルゴリズムじゃないけど、一応テストケースで確認・・あれ?paiza.ioがまた遅い?

 待つ時間がもったいないので、テストケースを確認せずに提出!

 9:15 AC テストケースの確認に時間取られすぎ。しかも確認できずに投げてるし。

C:金額の上限が100000円なので、100円から105円の商品は無限にあると考えて良さそうですね。

 パッと思いつくのが、個数制限なしのナップサック問題

 知ってればただやるだけ。

 X=int(input())

    DP=[0 for i in range(X+1)]

    DP[0]=1

    Shohin=[100,101,102,103,104,105]

    for s in range(6):

        for x in range(X+1):

            if DP[x]==1 and x+Shohin[s]<=X:

                DP[x+Shohin[s]]=1

    print(DP[X])

 楽勝!ではテストケースで確認して・・・

 paiza.ioが死にました

 ネット回線の問題?

 いえAtCoderには接続できます。

 他のエディタ?

 私はpythonerなのでanaconda(pythonの便利グッズ詰め合わせセット)が入ってます。

 エディタ代わりになりそうなspyder君に決めた!

 いや、コードは書けるけど、チェックどうするの?却下

 データサイエンティストご用達Jupyter Notebook召喚!!

 あれ?数字の入力どうするんだっけ?

 時間がもったいない。

 先に次の問題文を見て考察開始!

 でも、どこかで勝負しないと・・

 ペナルティ覚悟でspyderで書いたコードをノーチェックで提出!

 26:30 AC

 通った!けどすごいタイムロス・・

 D:あーはいはい。3文字の真ん中を固定して考えるやつ。

  前から見ていって、出てきた数字を記録(長さ10のリストを作り、最初は全部0、数字が出てきたら1にする)後ろからも見ていって、同じものを作る。

  前、中、後 で、前と後を全探索。

  中が3万、前と後ろがそれぞれ10だから、3x10**6これなら間に合うはず、怖いから枝刈りして提出。

  したいけど、テストケースを確認できません。

  paiza.io頼む。復活して!

  リロードしてるうちに復活しました!

  テストケースのチェックを済ませて提出!

 55:14  AC えらくタイムロスが出てるが、エディタ復活してよかった。

 E:DPっぽいがこの手の問題はとにかく紙に書いて試す!

  書いて書いて書いて

  やっぱりわからん。

  いや分かった。見たい数字より1つ小さい数字がいくつあるかを見れば良い。

  テストケースを通してpypyで提出!

  WA、RE??何事

  WAはまだしもREってどういうこと?

  よくわからないから、pypyからpythonに変えて提出!

  やっぱり同じところでWA、RE

  これはジャッジがおかしい?unrated?ぜひお願いします!

  それなら質問に出てるはず。

  できないケースがあるのかよ!

  同じ数字が4回出るケースを処理して、REが出るってことは、tryとexceptを使って、エラーが出たら0で返すようにして提出!

  93:48 AC 2WA

 F:問題文を読んで、考え始めた時点で時間切れ

  たくさんの人が解いてるから、時間をかければ解けるのかも?

 

結局A,B,C,D,Eの5完 93:48 で2ペナ

1204位でパフォ1185  レートは+1で1183

5完で緑パフォ?

いやこれだけのアクシデントで、冷えなかっただけ良しとしましょう。

とにかく疲れました。

今回のムーブはかなり良いですね。

特に、エディタがどうにもならないなら、先に問題文を見て考察だけ始めるあたりは、良くできたと思います。

水色復活は次回の宿題ですが、良いムーブを忘れないうちに記録して、今回の記事終わりです。