국대교육 일지 - 8/5
오전 셋
AtCoder CF 17 Qual A를 돌았다. 이게 실제로 두시간셋이라니…
D. Four Coloring
45도 돌리고, 변의 길이가 d인 정사각형에 대해서 이웃한 8방의 칸들이 전부 다른 색이면 된다. 색이 4개니까 각 좌표에 기우성에 맞춰서 칠하면 된다.
E. Modern Painting
최종 상태에서 ‘방해받지 않고 뻗은’ 가장 왼쪽의 열을 잡는다. 그걸로 그리드를 분할할 수 있고, 이걸 사용해서 DP를 하면 된다고 한다. 잘 모르겠다.
F. Squeezing Slimes
슬라임을 합한 형태가 대략 빽빽한 이진 트리 모양이 될 것이라고 예상할 수 있다. 같은 깊이에서 합쳐진 슬라임들을 한꺼번에 처리해준다고 하면, 각 Ai에 대해서 양쪽으로 붙일 수 있는 높이가 2가지 혹은 1가지로 나온다. 이를 통해 DP를 해주면 된다고 한다.
오후 셋
뭔지 모를 JAG Contest를 풀었다. 듣기에는 우리나라 UCPC같은 대회라고 한다.
D. Revenge of the Broken Door
단순히 두번째 최단경로를 구하는 식으로는 안된다.
게임 문제를 푸는 식으로 생각할 수 있다.
한 점에서 아직 끊긴 간선이 등장하지 않았을 때, S에서 v로 가는 비용을 라고 하자. 또, v에서 T로 가는 최단경로를 아무거나 하나 잡았을 때, v에서 향해야 할 간선이 끊겼을 때에 대체로 택할 최단 경로의 길이를 라고 하자.
대략 답은 가 된다. 이제 f와 g를 잘 구하면 된다.
는 T에서 뒤집은 간선들을 사용해 다익스트라를 돌리고 그 결과를 트리로 나타내 봤을 때, v의 부모로 가는 간선이 끊긴 것이라고 생각할 수 있다. 그러면 v를 루트로 하는 서브트리 아래에 있는 점들 중에서, 외부로 연결되는 백엣지 혹은 크로스엣지들을 체크하면 된다. 이건 트리 압축을 통해 할 수 있다고 한다(? 모르겠다)
는 파라메트릭으로 잡고 하면 된다고 하는데, 일단 넘어가자.
I. Revenge of the Endless BFS
피곤하다. 다음에 기회가 되면 자세히 쓰겠다.
행렬곱을 하면서, 파라메트릭을 하면 된다.
J. Farm Village
Ad-hoc류인 듯 하다. 일단 앞에서 받아오고, 뒤의 농장들이 들어올 때 변화량을 계산해서 최적으로 갱신해준다.
K. Conveyor Belt
평행사변형을 가장 컴팩트하게 쌓는 것인데, 그냥 직사각형을 쌓는 것이랑 동일한 논리를 사용할 수 있다. 구간에 값을 더해 줬을 때 그 중 최대값이 답이다.
힘이 빠진다. 좀 더 성실하게 살아야지 싶다.