🥶

JavaScriptでABC429(A-C + D)

に公開

https://atcoder.jp/contests/abc429

A - Too Many Requests

https://atcoder.jp/contests/abc429/tasks/abc429_a

  • うんうん、iを回しながら都度判断すればいいんだね、簡単だね
  • WA
  • → ……?あれ、三項って比較より優先度高いっけ
  • → なんかコードテスト調子悪いな、出しちゃえ
  • WA
  • → ……??あーまってiN間違えてる
  • WA
  • → ……???

このあとCまで片付けたところで見直してたら気づきました

スペルミスには気をつけよう!!あとちゃんとコードテストをしなさい!!!!

https://atcoder.jp/contests/abc429/submissions/70432208

23分19秒 AC!(3ペナ)

B - N - 1

https://atcoder.jp/contests/abc429/tasks/abc429_b

Bは愚直……愚直か?これ
全部の合計を求めると「Mにするために消したい値」がわかるので、それが存在するかチェック

https://atcoder.jp/contests/abc429/submissions/70419132

6分49秒 AC!

C - Odd One Subsequence

https://atcoder.jp/contests/abc429/tasks/abc429_c

何が何個あるか数えればそれぞれの整数について「それを2個選ぶ場合の数 × 残り1個を選べる個数」が出せて、足すだけ

https://atcoder.jp/contests/abc429/submissions/70429114

18分05秒 AC!


Perfomance

  • perf : 551
  • レート変化 : 873 → 844 (-29)

Upsolve

あの……あの……

D - On AtCoder Conference

https://atcoder.jp/contests/abc429/tasks/abc429_d

  • めんどいからAを3周に伸ばします
  • ランレングス圧縮をします
  • 各集団について、以下2つを求めます
    • 「その人達が第一村人のとき高橋君が何人に出会うか」
      • 人数の累積和を作っておくと二分探索で止まる場所も出会う人数も求まります
      • 二分探索、私はlower_bound()を持っています 作りましょう
    • 「その人達が第一村人なiの数」
      • この集団の地点 - 前の集団の地点 + 1です
  • それを全部足すと答えになります

https://atcoder.jp/contests/abc429/submissions/70453829

WA……あれ……??

その後も色々試すもうまくいかず……

時間切れ直前に思いました。これ、答えは2^{53}-1を超えるな……?

……

-     let sum = 0;
+     let sum = 0n;
-         sum += X_ifFirstIsTargetGroup * i_count;
+         sum += BigInt(X_ifFirstIsTargetGroup) * BigInt(i_count);
-     console.log(sum);
+     console.log(sum.toString());

https://atcoder.jp/contests/abc429/submissions/70461226

最悪だ!!BigIntにしたら通った!!!!

2025-10-25 22:41:46 AC


感想

あの、過去一カスみたいなミスで本当に終わりです せめて笑ってください

今後どうするかを考えましょう
D(BigInt忘れ)は丁寧にチェックするとして、Aはローカルテスト環境を用意すれば仕組みで解決できますね!!
ということでこれを機にローカルテスト環境を作成します……


過去のABCも似たような記事を書いています。よければそちらもどうぞ。

xx1 xx2 xx3 xx4 xx5 xx6 xx7 xx8 xx9 xx0
40x 402 403 404 405 406 407 408 409 410
41x 411 412 413 414 415 416 417 418 419 420
42x 421 422 423 424 425 426 427 428

Discussion