2018. 10. 19. 14:26, 알고리즘/Codeforces
http://codeforces.com/contest/1054
A, B, C에서 살짝 말렸는데 다행히 D를 빨리 해결했습니다.
A - Elevators or Stairs? (Code)
그냥 주어진 문제를 해석해 두 식의 값을 단순 비교만 하면 되는데 잠이 덜 깨서 그랬나 문제가 눈에 안들어와서 조금 고생했습니다.
B - Appending Mex (Code)
현재까지 나온 최댓값을 기억하고 있으면 Greedy하게 처리할 수 있습니다.
C - Candies Distribution (Code)
$L[i] + R[i]$를 계산하면 나보다 사탕이 많은 사람의 수를 알 수 있고, 이를 통해 각 사람의 사탕의 수를 $N-L[i]-R[i]$로 고정해둘 수 있습니다. 이후 L, R이 잘 성립하는지만 확인하면 됩니다.
D - Changing Array (Code)
Bar 연산이 없을 때 해당 값을 구하는 방법은 $B[i] = A[0] XOR A[1] XOR ... XOR A[i]$로 정의해서 동일한 값을 가지는 $B[i]$의 갯수에 대해 처리를 해주는 식입니다. Bar 연산은 그냥 $2^k-1$을 XOR하는 것이니 이는 곧 $B[i]$의 값을 우리 마음대로 $B[i] XOR (2^k-1)$ 혹은 $B[i]$중에 택할 수 있다는 것이고 동일한 값을 가지는 $B[i]$가 적으면 적을수록 좋으니 최대한 균등하게 나누어주면 됩니다.
고만고만한 점수대에 모여있었어서 2 hack이 엄청 큰 도움이 됐네요. 다만 E를 못 풀어낸게 아쉽습니다.
'알고리즘 > Codeforces' 카테고리의 다른 글
[Codeforces] Round #519 (0) | 2018.11.26 |
---|---|
[Codeforces] Round #518 Div. 1 (0) | 2018.11.26 |
[Codeforces] Round #517 Div. 1 (2) | 2018.10.22 |
[Codeforces] Lyft Level 5 Challenge 2018 - Elimination Round (0) | 2018.10.09 |
[Codeforces] Round #511 (Div. 1) (0) | 2018.09.22 |
[Codeforces] Round #509 (0) | 2018.09.19 |
Comments