はじめに
昨日、ミラティブプログラミングコンテスト2025(AtCoder Beginner Contest 414)に参加しましたので報告します。
今回のまとめ
- 今回はA問題とB問題を解いた(二完)
- A問題・B問題共にPython3(PyPy)で解いた
- C問題は回文の作り方がわからず、諦めてしまった
- D問題以降は触れていない
レザルト
- 6665位(5817位)
- パフォーマンス 434(茶色)
- レート 177→202(+25)
C問題が350点問題だったこともあり、二完であるにも関わらず、茶パフォが出ました。
A - Streamer Takahashi
問題文
提出時間:3分36秒
ついに高橋くん、配信者になる。
どれくらいの人が最大23時間〜24時間配信する彼の配信についていけるかを問う問題です。
$X_i$が$L$以下、かつ$Y_i$が$R$以上である人をカウントします。
実際にやることは難しくないです。A問題ですし。
def main() -> None:
n, l, r = map(int, input().split())
ans = 0
for _ in range(n):
x, y = map(int, input().split())
if (x <= l and y >= r):
ans += 1
print(ans)
if __name__ == "__main__":
main()
B - String Too Long
問題文
提出時間:8分50秒(計12分26秒)
ランレングス圧縮(詳しいやり方は問題文や入出力例を参照)を展開する問題ですが、100文字を越えている場合は中断します。
文字列をメモリに載せてしまうとメモリ制限オーバーでRE(Runtime Error)を起こすと判断したため、数値を越えた時点で、文字列の追加を行わず処理を中断させるようにしました。
意外と誤答してしまった方が(順位問わず)多かったみたいで、やはりここが罠だったのかなと思いました。
def main() -> None:
n = int(input())
total_length = 0
answer = ''
for i in range(n):
c, l = map(str, input().split())
total_length += int(l)
if (total_length > 100):
print("Too Long")
exit()
answer += c * int(l)
print(answer)
if __name__ == "__main__":
main()
C問題以降
C問題は10進数の回文数値を算出し、その$A$進法が回文数値になるかどうかを判定すればOKだったようです。
制約条件からTLEが怖くて出来なかったのですが、TLEは考えなくても良かったようです。
D問題以降は見ていません。
今後の方針
- アルゴ式の『数理素養』を引き続き進める(現在は二次関数を進めています)
- アルゴ数学本や鉄則本をまずは読む(読めてないので読んでいきたい)
- 体調・夏の不安定な天候と相談しつつ、今後もコンテストには積極的に参加していきたい
終わりに
場合によっては二完で茶パフォ行くんだなーと思いました。
今後も無理しない程度に参加していきますので、よろしくお願いします。
ここまで読んで頂きありがとうございました。