Semi-Game Cup 2
www.acmicpc.net

A번 밖에 풀지 못해서 후기를 쓸 생각이 없었으나, 모종의 이유로 마음이 바뀌었다. ㅎ
개학이 다가와서 심란하던 차에 마음을 정화할 수 있게 해준 대회였다. 문제들이 재미있으니 업솔빙 해보는 것을 추천.
Prob. A
대충 수형도를 그려보니 겹치는 부분이 많아서 Kali가 이길 수 있는 경우가 한정될 것으로 추측했다. 그래서 뻔히 보이는 2만 예외로 두는 코드를 제출했고 맞았다. 아니, 맞았었다. 일단은 스코어보드 상에서 내가 퍼솔이어서 너무 기뻤고, 바로 다음 문제를 고민하러 떠났다. 그러다 한 20분쯤 지나서 스코어보드를 다시 봤더니 코드가 터져 있었고, 데이터가 약해서 재채점했다는 공지를 발견했다.
stonejjun님의 후기를 보면 "결국 굉장히 약한 랜덤 데이터와 함께 첫 솔브가 if(k==2) kali 가 되었다." 라는 문구가 있는데 이거 나다. ㅠ
솔직히 데이터가 어떻게 약해야 이 코드가 뚫리는지 이해가 안 가서 한참을 고민했다.... 예외가 6도 있다는 걸 금방 발견하긴 했는데, '설마 예외가 두 개 뿐인데 하나만 넣었겠어' 하는 생각에 제출하지는 않고 있었으나 그게 맞았다. ㅜㅜ
Prob. B
특별상을 받게 해준 문제다. 다양한 관찰을 했으나 답을 이끌어내기엔 무리였고, 출제자님께 죄송할 정도로 찍다시피 낸 코드가 틀렸다. 정말 풀이가 상상이 안 가는 문제.
Prob. C, D
C는 그냥 어려워 보여서 깊이 생각하지 않았다. D는 출제자가 빤히 보여서 고민하지 않았다.
Prob. E
naive DP를 짜서 돌려봤더니 1, 2, 6, 10만 예외로 나오길래 A번과 비슷한 문제라고 생각했다가 망했다. 후기글에 그런디 수가 언급된 걸 보니 그냥 DP를 잘못 짠 것 같다.
Prob. F
216×23 의 값이 44,444 보다 조금 작다. K를 고정하고 나머지 세 수를 겹치지 않게 검사하려면 N3 정도의 쿼리가 필요하고, 각각의 쿼리마다 최대 한 번의 쿼리를 더 쓴다고 생각할 수 있다. 일반성을 잃지 않고 K의 고유 모양을 '묵'으로 고정하자. K를 1번 자리에 배치하는 것이 최적임은 자명하다. K는 '묵' 또는 '찌'를 내는 사람만 이길 수 있고, K가 우승하는 대진표를 짤 수 있는지를 판별하려면 '묵'과 '찌'를 내는 사람이 각각 몇 명인지를 알 필요가 있다. 참고로 K는 N번의 게임에서 승리해야 한다. '빠'는 '묵'을 이기고, '찌'는 '빠'를 이긴다. 이로 인해 '찌'를 내는 사람의 하위 대진표를 찌...찌빠...빠묵...묵"과 같은 형태로 구성한다면 '찌' 또는 '묵'이 항상 진출할 수 있다. 따라서 '찌'를 내는 사람이 N명 이상이라면 K는 항상 우승할 수 있다. '찌'를 내는 사람이 N명 미만이라고 가정하자. K는 '찌'를 내는 사람과 최대한 늦게 만나는 것이 최적이다. 왜냐하면 '묵'을 내는 사람의 하위 대진표는 모두 '묵'을 내는 사람이어야 하기 때문이다. 따라서 '묵'을 내는 사람을 X명, '찌'를 내는 사람을 Y명이라 하면 X≥2N−Y−1를 만족해야 한다. 이제 '묵'을 내는 사람과 '찌'를 내는 사람이 각각 몇 명인지만 구한다면 K의 우승 여부 판별은 O(1) 에 가능하다.
쿼리를 생각해보자. K,a,b,c 를 물었을 때 나올 수 있는 대답은 14가지이고, 최대 한 번의 추가 질문으로 a,b,c 가 각각 무엇을 내는지 결정할 수 있어야 한다. 여기서 13가지의 대답에 대해서는 Case-Work가 가능한데, 나머지 하나는 추가 질문을 뭘로 해도 결정할 수 없는 것 같아 그냥 포기했다. 내 풀이가 맞는지는 모르겠지만, 아마 K,a,b,c 가 아닌 다른 질문을 한다면 쉽게 풀리지 않을까 추측해본다.
Prob. G, H, I
감이 안 온다.
Prob. J
충전 - 사용 - 충전 - 사용 - ⋯ 이 반복될 때 '사용'을 최대화하는 문제다. 먼저 시간 순으로 정렬해주고, 각 노트마다 어디서부터 충전해야 완충되는지, 여기까지 사용하려면 어디서부터 사용해야 되는지를 투포인터로 전처리할 수 있다. 남은 건 simple O(N) DP. 인 줄 알았는데 11%에서 틀렸다. 이리저리 생각해봐도 딱히 잘못된 점을 찾을 수 없어서 포기했다.
Semi-Game Cup 1 을 업솔빙하며 '내가 참가했었다면 한 문제도 못 풀었을 것 같다'고 생각했는데 이번 대회도 역시 만만치 않았다. 그렇지만 지문도 재밌었고, 풀이를 찾아가는 과정도 상당히 흥미로워서 시간 가는 줄 모르고 대회를 즐길 수 있었다.
'Competitive Programming > Others' 카테고리의 다른 글
진짜 최종 구데기컵 2 2 후기 (4) | 2022.04.03 |
---|