blog.bouzuya.net

2020-07-30 ABC140 A, B, C, D

ABC140 A, B, C, D 考察

ABC140 A - Password

1 以上 N 以下の数字なので 1 文字につき N 種類。 3 文字のパスワードなので N * N * N を出力する。

https://atcoder.jp/contests/abc140/submissions/15528503

ABC140 B - Buffet

B_i の合計と ii + 1 を連続して食べた場合に C_i が加算したものの合計が答えになる。 N <= 20 と小さいので指示通りにシミュレーションする。

https://atcoder.jp/contests/abc140/submissions/15528533

ABC140 C - Maximal Value

数列 B から数列 A の総和の最大値を求める。 A の先頭と末尾は B の先頭と末尾にそれぞれ一致する。残りは min(B_i, B_{i+1}) を上限にする良さそう。個数が少ないときの例外的な処理が必要かもしれないと思ったけど制約上問題なさそうだった。

https://atcoder.jp/contests/abc140/submissions/15528560

ABC140 D - Face Produces Unhappiness

N <= 10^5 K <= 10^5 という制約から指示通りにシミュレーションしても間に合わない。そもどこを反転するのかも分からない。そこで入力例 1 , 2 を見て考える。

両端はひとまず無視する。ある範囲を反転したときに幸福かどうかが変化するのは範囲の両端の人のみだ。適切な範囲を反転することで幸福な人を 2 人ずつ増やすことができる。なので最初に幸福でない人 (LR or RL の並び) を数えてそこから 2 ずつ減らしていけば良さそうだ。両端について |L L| |R R| がある。 |L は幸福でない。 L| は左隣による。 |R は右隣による。 R| は幸福でない。 L に統一しても R に統一してもどちらかの端は幸福でない。最初の K を端から置き換えれば少なくともどちらかの端は幸福になる。両端は気にしなくても良さそう。最大の幸福な人を N - 1 として幸福でない人の数を除くと答えになる。

なんか怪しいけど AC した。以前は解けなかった問題だった。なぜか解けた。

https://atcoder.jp/contests/abc140/submissions/15528607


BPStudy#155〜要件定義・仕様化・実装の継ぎ目をなくす CCSR 開発手法 に参加した。ぜんぜんわからない。


リングフィットアドベンチャー。続けている。