👺
JavaScriptでABC417 (A-C)
A - A Substring
そういうことをするメソッドがあった気がしますが、パッと思い出せなかったので魂のArray.prototype.shift()
脳筋すぎる
あとから検索しました
たぶんString.prototype.slice()ですね
console.log(S.slice(A, -B))をすればよさそうです。
(ただし、Bが0だと吹っ飛ぶので分岐つけましょう。普通にif文でもいいし、三項演算子で第二引数にundefinedを投げる方針でもいいです)
1分47秒 AC!
B - Search and Delete
Bは愚直
問題名のとおり、「探して消す」をやります
探すのはArray.prototype.indexOf()かArray.prototype.findIndex()でいいですね
消すのは「nullに置き換えて、あとでnullをArray.prototype.filter()で吹き飛ばす」が楽だと思います。
4分46秒 AC!
C - Distance Indicators
累積和かな〜って考えてたら5分くらい溶かしてました なにしとんねん
なんか文字式ぶん回したらそれっぽい結果が出てくるのかな〜と思ってごちゃごちゃやってたら
……こーれどっちも先に計算しとけってことか?
- 事前に
について1 \le i \le N とi + A_i を計算しておきますi - A_i - で、
の方の配列のindexを、計算結果が何になるかで分類しますi - A_i -
[0, 2, 2, 1]→{ 0: [0], 1: [3], 2: [1, 2] }みたいな - このオブジェクトを
groupedとします
-
-
について、1 \le i \le N grouped[i + A[i]]のうちi + 1以上のものが何個あるかをそれぞれ数えて全部足します- ちゃんと二分探索をしよう!
31分15秒 AC!
D-G
なんもわからんよ〜
Dは
Perfomance
- perf : 713
- レート変化 : 823 → 812 (-11)
感想
425点のD問題が解けないのはまあしゃーないとして、C問題解くのがちょっと遅かったかなぁ……
できればさっと気づいて20分くらいでACしたい問題な気はしますね
とはいえ425点以上の問題のACを出せないとさすがに頭打ちだと思うぞ……
過去のABCも似たような記事を書いています。よければそちらもどうぞ。
Discussion