JMK no matter what

GCJ 기출문제 정리 #2

연습은 안하고 입코딩만 한다!

GCJ 2009 Round 2

A. Crazy Rows

  • 그리디. 문제를 잘 읽을 것!
  • small 은 n 이 작아서 그냥 무식하게 풀어도 된다.
  • large 로 가려면 안되는데.. adjacent rows 만 바꿀 수 있다는걸 알면 그냥 풀 수 있다. -.-; 제일 무식하게 풀면 됨!

B. A Digging Problem

  • 상태공간탐색.
  • small 은 rows * 2^columns * columns 로 풀어도 되고..
  • large 에서는 상태공간 개수를 줄여야 한다. 2^columns 를 줄여야 하는데.. 서로 떨어져 있는 두 개의 칸을 둘 다 파는 것이 의미가 없다는 것을 알면 좀 쉽다. 이번 줄에서 왼쪽 끝과 오른쪽 끝, 다음 줄에서 왼쪽 끝과 오른쪽 끝을 각각 기록하면 O(R*C^4) 가 된다. 흠. 이렇게 하면 풀긴 풀 수 있을듯?

C. Stock Charts

  • 그래프 + 모델링 + 이분매칭.
  • small 만 당시엔 무식하게 풀었었다.
  • A 타임 시리즈가 B 타임 시리즈 위에 표현될 수 있다 라는 관계가 DAG 로 표현된다는 것이 포인트. 그러면 path cover 문제로 변환된다. DAG 의 path cover 는 이분매칭으로 풀 수 있다. 아.. 지금 봐도 쉽진 않군 -_-

D. Watering Plants

  • 이분탐색 + 노멀라이제이션 + 기하.
  • 일단 이분탐색을 해야 한다는 것은 자명한 듯 하고.. R 인 원 두개로 다 덮을 수 있냐를 보면.. 답을 노멀라이징하는 게 중요한데.. 우선 가능한 답들의 원들을 잘 움직이면 같은 plant 들을 덮으면서 두 개에 닿게 만들 수 있다. 덮을 plant 두개와 R 이 주어지면 두 개의 원을 정의할 수 있는데 얘들의 집합 전체만 있어도 답을 구할 수 있음~~~ 그러면 각 원마다 O(n) 으로 덮어지나 확인한 이후에 비트마스크로 확인하면 오우케이. O(n^4) 로 풀 수 있다.

B 나 짜봐야지

2010-04-08 12:11:18 | JM | /logs/topcoder/ | 0 Comments

Leave a comment

春來不似春

About

Eventstream

Pages

Guestbook

Search

Site Admin

Recent Comments