0.はじめに
先週のABCで700台に復帰したと思いきやその後のARCで
一つも回答できず、レート-44の667と大幅ダウンを鞍って迎えた今回。
A~Cしか解けずにレート-2の665と停滞しました。
ここら辺がまぁ今の実力なのかと思います。
9月からARCのレートが変わる為、ARCで一発逆転が狙えなくなるので
地道にABCを積み重ねて行きます。
1.A - 369
Aの難易度が上がっている気がする今日この頃。
結果的には6分くらいで解けているのでまぁ、小手調べとしてはちょうどいいのかも。
【考え方】
・ABの差からC1・A・B、A・C2・B、A・B・C3の3種類の等差数列を
求め、C1、C2、C3の種類数を求める。
【実装】
・とりあえずA≦Bに整える
・AとBの差Cを求める
・C1は、A-C
・C3は、B+C
・C1とC3が同じなら、答えは1種類
・異なる場合は、答えは2種類か3種類
→Cが2で割り切れればC2が整数となるので
答えは3種類
→Cが2で割り切れなければC2が整数ではないので
答えは2種類
練り込めばもう少しスマートに出来そうでしたが回答速度優先で
AC頂けました。
https://atcoder.jp/contests/abc369/submissions/57280211
2.B - Piano 3
Aが難しかったのでBもシミュレーションしないといけないのか?
と思いましたが、そこまで難しい話ではなかったです。
右手用と左手用の移動数と、前の手の位置を保持しておき、
それぞれの手の移動数を計算し、最後に足し合わせて表示で
ACとなりました。
各手始めに押す時は、移動数は0となる部分だけ少し工夫が必要な
だけで、そこまで難しくはない問題でした。
https://atcoder.jp/contests/abc369/submissions/57287315
3.C - Count Arithmetic Subarrays
なんとなくどこかで見たような問題。
まずは、数列の長さが1の場合のNケースと2の場合のN-1ケースは
保証される。
あとは、数列内の等差数列が3個続く場合、+1、4個続く場合+3
5個続く場合+6と、等差数列の数をNとした場合(N-2)×(N-1)/2を
足し込めば答えが求まりました。
https://atcoder.jp/contests/abc369/submissions/57300559
4.D - Bonus EXP
解答例をみて屋っと解けました。
DP何だろうなとは思いましたが、DPになれていない為か
DPのパターン分けを
「k 匹目までのモンスターと出会い、偶数(0 を含む)匹倒した時に得られる経験値の最大値」
「k 匹目までのモンスターと出会い、奇数匹倒した時に得られる経験値の最大値」
とすれば良いことに気づけませんでした。
ここら辺は数こなせば何とかなるものなのか・・・。
https://atcoder.jp/contests/abc369/submissions/57332346
以上