[Codeforces] Mail.Ru Cup 2018 Round 1

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