ABC144:水色競プロerのムーブ備忘録(爆死)
今回はABC144のムーブ記録です。
後で意味を持つのですが、syunsukeはpythonerです。
〇配点 A:100 B:200 C:300 D:400 E:500 F:600
〇制限時間 100分
配点も時間もいつも通りのABCです。
〇コンテスト開始時のsyunsukeのレート 1293
〇今回の方針
(いつもの方針です)
基本前から解く。
ただし、はまったら順位表を確認して、次の問題を通す人が多ければ、次の問題を先に解く。
コンテスト開始!
A:if 文で、AもBも1~9の範囲ならAxBそうでなければ-1を出力
って問題文開くの速くなりましたか?
A,B=map(int,input().split())
if A<=9 and B<=9:
print(A*B)
else:
print(-1)
1:34 AC
B:あれ?間違えてA問題を開いた・・やり直し
??やり直し
???!
問題文の出だしが紛らわしい!
for文を2重でまわせば良いですね。
N=int(input())
for i in range(1,10):
for j in range(1,10):
if N==i*j:
print("Yes")
exit()
print("No")
2重のforの積にNがあればYesを出力してそこで終わり
なければ最後にNoを出力して終わり
3行目のforは
for j in range(i,10):
とすれば高速化できますが、そもそも10^2しかないループなので、高速化する必要はな さそうですね。
3:12 AC
C:全部の約数を作る
全部の約数に対し、
約数+(N÷約数)-2を調べて、一番小さいものが正解
15:04 AC
D:xをaで割って、2次元で考える
水の面積がaxbの半分より大きいか、半分以下かで条件分岐
こんな感じなら黒い部分を
こんな感じなら白い部分を計算
角度のライブラリは良くわからないけど、3角形の3点の座標か、3辺の長さを求めれば、きっとよいライブラリか競プロの問題の解説にでもよいコードがあるはず。(ラジアンだと面どいから、度単位のがあると良いな)
3角形の3辺の長さは簡単。
黒い部分の面積がaxbの半分以下であれば、面積をSとすると
・b
・S*2/b
・((b)^2+(S*2/b)^2)^0.5
で求められる。
また、3点の座標も、直角部分を(0,0)にあわせれば、残りは(0,b)と(2*S/b,0)
あとは「python 3角形 角度」で検索すれば終わり
・・とはなりませんでした。
良いライブラリが見つかりません
良い記事もみつけられず1時間このまま
なんとか見つけた記事を参考に
最後のいくつかのケースでWA
一番最後のケースでRE
そのまま爆死
参加者の半数が解く問題を解けなければ600台のパフォも出ます。
後でわかったことですが、
アークタンジェントを使えば良かったんですね。
なぜいきなり「良いライブラリがあるはずだから探せ」と考えたのか理解できません。
アークタンジェントが出てこなくても、検索に「python」を入れる意味はないですね。
公式があって、C++で実装してあるなら、pythonに書き換えるorいっそのことC++で書くでも良いわけで。
ちなみに、E問題はぱっと見2分探索で、実際に2分探索で解けるようです。
きちんと実装までできたかはわかりませんが、Dを早めにあきらめれば、Eを解けたかもしれません。ここも判断ミスです。
結局A,B,C 3完 15:04で0ペナ (Dは通せていないのでペナルティ扱いみなりません)
2992位でパフォ665 レートは-50で1243
久しぶりの茶パフォ
今回の反省
ハマった時の対応が悪すぎる。
あきらめて先に進む基準を決める!
冷静に検索キーワードを選ぶ、言語にこだわりすぎない(簡単なものならC++でも良い)