ABCEの4完3WA。
各問題
A - 1-2-4 Test
1, 2, 4
は二進表記で 001, 010, 100
なので、以下のようにビットが立っているかどうかで判断可能です。
int ans = 0; if (a & 1 or b & 1) ans += 1; if (a & 2 or b & 2) ans += 2; if (a & 4 or b & 4) ans += 4;
(公式解説のほうが賢かった...)
B - Hammer
まず、楽にするために X が負のときは X, Y, Z 全ての符号を反転させて、常に X が正数として考えます。(左右対称なので問題ありません)
Y < 0
またはX < Y
のときは原点から X までに壁がないので最小距離は X です。- そうでないとき
Y < Z
のときはハンマーを拾えない(壁のほうが手前にある)ので不可能です。0 < Z( < Y)
のとき、ゴールにいく過程でハンマーを拾って壁を壊せるので最小距離は X ですZ < 0( < Y)
のとき、一旦 Z まで戻ってから進む必要があり、最小距離はX + abs(Z) * 2
です
X が負の時を考慮し忘れて 1WA、Y が負のときも考慮し忘れてさらに 1WA...。
C - Simple path
単に木上のDFSをして、帰りがけにパスを拾ってくればよいです。
D - Stones
解けず...。
DPか、残り a[k - 1] * 3
あたりまで貪欲してから全探索か、を考えていましたが...。
E - Apple Baskets on Circle
今週の目玉
二分法で「次の週で終わる」周を特定し、最後の1周は愚直にループを回して確定させればよいです。
親の顔より見た二分法の実装をミスって1WA...。なにやっとんねん。
まとめ
Dが仮に解けたとしても相当時間がかかりそうだったので、すぐEにいったのが立ち回り的には大正解で、レートを減らさずにすみました。
Dが結局解けてないのはだめですが。