三井住友信託銀行プログラミングコンテスト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完で緑パフォ?
いやこれだけのアクシデントで、冷えなかっただけ良しとしましょう。
とにかく疲れました。
今回のムーブはかなり良いですね。
特に、エディタがどうにもならないなら、先に問題文を見て考察だけ始めるあたりは、良くできたと思います。
水色復活は次回の宿題ですが、良いムーブを忘れないうちに記録して、今回の記事終わりです。