🤔
JavaScriptでABC418(A-C)
A - I'm a teapot
末尾3文字が"tea"
かって聞かれてるので、末尾3文字をとってくればいいですね
S.slice(-3)
です
0分53秒 AC!
B - You're a teapot
Bは愚直
言われた通り書く!それだけ
部分文字列全列挙がだるいかも。
私はこうしました
for (let l = 0; l < S.length; l++) {
for (let r = l; r < S.length; r++) {
const t = S.substring(l, r + 1);
// ここでtについて処理
}
}
6分45秒 AC!
C - Flush
ディーラーの最善手は「すべてのフレーバーをb-1個渡す」
なんかごちゃごちゃやったらたどり着いてしまった コード見たほうが早い
21分19秒 AC!
D - XNOR Operation
なーんの見当もつかなかったので飛ばす!
E - Trapezium
台形判定のために、「2点を選んだとき、その線の傾きが何になるか(有理数)」を全通り計算して個数カウント。
傾きでグループ分けしたときの各グループの個数がわかるので、そこから2つ選ぶ場合の数を全部求めて足す。
で、平行四辺形は2回数えてるので平行四辺形を引く必要があって……
平行四辺形は対辺の長さが等しいので、最初のグループわけを「傾き & x軸方向とy軸方向のうち長い方の長さ」で行って2つ選ぶ場合の数を全部求めて足して2で割ると平行四辺形の数になる。これを引く
TLE、かなしい
台形判定に絶対傾きは必要だと思うので、平行四辺形部分を早くするしかないと思うんだけど何も思いつかずギブアップ
F,G
見てないよ〜
Fは一瞬チラ見したけどなんもわかんなかったのでよし
Perfomance
- perf : 843
- レート変化 : 812 → 815 (+3)
感想
しぶいっすね……
Cまでがそこそこ速かったこと、Dを捨てたのはいい判断だったと思います
過去のABCも似たような記事を書いています。よければそちらもどうぞ。
Discussion