http://codeforces.com/contest/1036
전형적인 문제를 빠르게 풀어내는 것에는 자신이 있어서 이번 라운드로 오렌지로 복귀하려했으나 시원하게 말아먹었습니다.
A - Function Height (Code)
최대한 균등하게 뿌려주면 되니 그냥 (n+k-1)을 k로 나눈 몫이 정답입니다.
B - Diagonal Working v.2 (Code)
생각해보면 답은 K, K-1, K-2 중에 있습니다. case by case로 잘 나눠서 풀면 됩니다.
C - Classy Numbers (Code)
쉽게 생각하고 코딩으로 뛰어들었다가 시간을 정말 많이 날려먹다가 포기하고, D를 풀고난 후 다시 C로 돌아왔지만 끝날 때 까지 완성을 못했습니다. 거의 1시간 반 정도를 썼는데 너무 슬펐습니다. 지금 다시 생각해보니 nonzero-digit이 3개 이하인게 아니라 zero-digit이 3개 이하인 문제로 착각했던 것 같네요.
$10^18$ 이내의 조건을 만족하는 수가 그다지 많지 않아서(100만개 이내) 일단 모든 수를 다 구해놓은 다음에 범위를 잡아서 풀어도 되고, 그냥 범위를 잘 나누어 풀면 됩니다.
저는 아래와 같이 해결했습니다.
2105066
(a,b) -> b개의 칸에 non zero를 a개 써야함
2105060~2105066 : (-1, 0) + 5*(-2,0)
2105000~2105059 : (0, 1) + 5*(-1,1)
2100000~2104999 : (1,3) + 4*(0,3)
2000000~2099999 : (2,5) + 0*(1,5)
0000000~1999999 : (3,6) + 1*(2,6)
D - Vasya and Arrays (Code)
C에서 말아먹고 D로 넘어왔는데 문제를 읽고 푸는데까지 15분도 안걸렸던 것 같네요. merge sort에서의 merge와 비슷한 느낌으로 제일 왼쪽에서부터 합이 같을 때 까지 두 개의 포인터를 이동시키면서 진행하면 됩니다. 단 두 배열의 합이 같지 않은 경우는 따로 처리를 해주어야 합니다.
일단 C번 같은 문제에서 말아먹은 것도 참 안타까운 일이지만, C를 좀 짜다가 너무 오래 걸리겠다 싶으면 빨리 접고 다른 문제로 가던가 했어야하는데 계속 붙잡고 있던게 굉장히 큰 실수였네요. ICPC때 이런 일이 안생기도록 저런 류의 문제도 많이 건들여봐야겠습니다.
'알고리즘 > Codeforces' 카테고리의 다른 글
[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 |
[Codeforces] Round #508 (0) | 2018.09.12 |
[Codeforces] Round #507 (0) | 2018.09.07 |
[Codeforces] AIM Tech Round 5 (0) | 2018.09.03 |