👺
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