Post

Virtual Codeforces Round 956 (Div. 2)

시험이 끝난 날 Virtual Participation으로 참가한 코드포스 956번 대회 일지입니다.

0:00~0:02

  • A번을 잡았습니다.
  • 발상 1: 다 1으로 채우면 됩니다(틀렸습니다).
  • 발상 2: 1, 2, 3, 4…로 채우면 됩니다(맞았습니다).

0:02~0:24

  • B번을 잡았습니다.
  • 말렸습니다.
  • 발상 1: 크기 $nm$은 크기 $22$를 여러 번 해서 얻을 수 있으므로, 크기 $2*2$로 잘 만들면 됩니다.
  • 발상 2: 그러면 사발 뒤집기처럼 왼쪽 위부터 쭉 밀면서 하면 됩니다.
  • 맞았습니다.

0:24~0:34

  • C번을 잡았습니다.
  • 어차피 모든 칸을 채우는 것이 이득이므로, a-b-c, a-c-b, … 6개의 순서에 대해 채워지는 최소를 채우면 됩니다.
  • 맞았습니다.

0:34~0:46

  • D번을 잡았습니다.
  • 관찰: 정렬된 상태에서 시작한다고 할 때, 어떤 배열은 홀수 번의 스왑으로 도달 가능하거나 짝수 번의 스왑으로 도달 가능하나, 둘 다는 불가능합니다.
  • min swap sort를 구현해서 그것만 처리해주었고 맞았습니다.

0:46~1:01

  • E번을 잡았습니다.
  • 게임의 상황에 따라 기댓값을 계산할 필요 없이, 각 공이 누구에게 갈지의 확률을 기반으로 기댓값을 구하면 됩니다.
  • 일반 공과 특별 공을 나누어서 생각할 때,
  • 일반 공을 어떤 순서로 정렬하면 홀수 번째는 앨리스, 짝수는 밥이 가져갑니다.
  • 이 정렬에 B를 중복조합 하듯이 꽂습니다. 이때 홀수 번째 공의 앞으로 들어가면 앨리스, 짝수 번째 공의 앞으로 들어가면 밥이 가져갑니다. 맨 마지막에 들어갈 경우 마지막 일반 공을 가져가지 않은 사람이 가져갑니다.
  • 이를 기반으로 확률 놀이를 하면 됩니다.
  • 맞았습니다.

1:01~1:20

  • F번을 봤습니다.
  • 포기했습니다.

후기

  • B에서 말릴 때만 해도 확실히 PS 재활이 필요하겠구나 싶었는데, CDE를 생각보다 너무 쉽게 풀어내 버렸습니다. 그냥 했으면 2400 퍼포로 오렌지에 복귀했을 것 같습니다.
This post is licensed under CC BY 4.0 by the author.