2016 본선문제 풀이
A. 끝말잇기
• 입력은 조작된 사전이 들어온다.
• 그러므로, 입력의 모든 영단어는 구성 알파벳이 정렬되어 있다.
• 또한, 모든 조작된 단어가 사전순으로 정렬되어 들어온다.
• 즉, 모든 단어가 차례대로 word[i-1].last == word[i].first를 만족하면 YES,
한 번이라도 만족하지 못하면 NO.
출제자: 김동이
F. DNA 비밀번호
• 가장 쉬운 풀이는 가능한 모든 경우를 전부 해보는 것
• 시간복잡도 O(PS)
• 시간초과!
• 현재 보고 있는 문자열 PiPi+1…Pi+s-1의 [‘A’, ‘C’, ‘G’, ‘T’]의 개수
• 다음 보게 되는 문자열 Pi+1Pi+2…Pi+s의 [‘A’, ‘C’, ‘G’, ‘T’]의 개수
• 두 문자열의 구성은 Pi, Pi+S 외에 모두 겹친다.
• 배열을 사용하여 시간을 줄인다. cnt[4]에 카운팅한다.
출제자: 천민호
C. Candy
• 문제 요약
• 𝑘=0
𝑛
2 𝑘 × 𝑛𝐶𝑘
• = 𝑘=0
𝑛
1 𝑛−𝑘
2 𝑘
× 𝑛𝐶𝑘
• = (1 + 2)n = 3n
• 𝑘=1
𝑛
2 𝑘 × 𝑛𝐶𝑘 = 3 𝑛 − 1
출제자: 장홍준
H. 사서왕 준서
• 필요한 최소의 노동력
• 모든 책을 옮기는 노동력(sumf) – 쓰지 않아도 되는 최대의 노동력(maxf)
• 옮기지 않아도 되는 비내림차순 책들의 노동력을 조사한다.
• D[i]: i번째 책을 마지막으로 하는 비내림차순 책들의 노동력합의 최대값
• D[i] = max(D[j]) + f[i] //j = 0 ~ i-1
• 답: sumf – maxf
• 시간복잡도: O(N2)
출제자: 김현정
D. InterGrid
• Vertex: 출발점, 웜홀, 도착점
• Edge: 시작점->웜홀 / 웜홀 <-> 웜홀 / 웜홀->도착점
모든 Edge는 manhatan dist의 가중치를 가진다.
출제자: 송기선
S E
1
3
2
4
D. InterGrid
• 출발점 -> 도착점
• Dijkstra Algorithm
• 시간복잡도 O(V2)
출제자: 송기선
E. Three-Tree
• S는 N2비례하는 크기 => 이런 모양의 트리를 구성할 수 있다.
• 이 때 생기는 단순 경로의 개수 S = B * (A + B – 1)
• B, (A + B – 1)을 S의 약수 쌍으로 정하면 되겠구나!
• 그런데 S가 소수라면.. ? B = 1, A = S?
출제자: 전명우
S
B개
A개
E. Three-Tree
• C개의 노드를 추가해보자!
• 늘어나는 단순 경로의 개수는 정확히 C개
• 길이 3인 단순 경로 개수 S = B * (A + B – 1) + C
• 이제 S가 소수여도 C를 적절히 잘 정하자
• C 후보 개수 약 S개, B 후보 개수 약 S0.5개
• 시간복잡도 O(S1.5)
출제자: 전명우
S
B개
A개
C개
G. I.O.I
• 1~N번째 선수 => 0~N-1번 선수라고 하자.
• D1 [i][j] / D2 [i][j]
• i: 한국팀의 남은 선수들의 bitmask 표현
• j: 상대팀의 남은 선수들의 bitmask 표현
• Bitmask 표현
출제자: 조승현
10101110
0번째 선수가
남아 있다
1번째 선수가
없다
=1 + 4 + 16 + 32 + 64 = 117
G. I.O.I
• D1 [i][j]: 한국팀이 선택할 차례일 때 한국이 승리하는 횟수의 기대값
• D2 [i][j]: 상대팀이 선택할 차례일 때 한국이 승리하는 횟수의 기대값
• D1 [i][j] = max(D2 [i – (1 << k)][j – (1 << l)] + pk,l)
• D2 [i][j] = min(D1 [i – (1<< k)][j – (1 << l)]+ pk,l)
• 답: D1[2n-1][2n-1], D2 [2n-1][2n-1]
출제자: 조승현
B. 진격의 거인
• 먼저, 삼각함수를 사용해 파괴된 영역 내부의 집들을 찾아낸 후 제외
• 두 집 사이의 거리
1. 두 집을 잇는 선분이 거인이 파괴한 영역을 지나지 않는 경우
2. 두 집을 잇는 선분이 거인이 파괴한 영역을 지나는 경우
출제자: 조승현
B
A
경우 1
B
A
경우 2
B. 진격의 거인
• 𝐴𝐵가 𝑂𝑃혹은 𝑂𝑄와 교차하는 경우
• 𝑐𝑐𝑤 𝑂, 𝑃, 𝐴 × 𝑐𝑐𝑤 𝑂, 𝑃, 𝐵 < 0 &&
𝑐𝑐𝑤 𝑂, 𝑄, 𝐴 × 𝑐𝑐𝑤 𝑂, 𝑄, 𝐵 < 0
출제자: 조승현
B
A
O
P
Q
• 두 집을 잇는 선분이 파괴된 영역을 지나는 경우?

SHAKE - 경기 남부 4개대학 연합 프로그래밍 경시대회 본선 문제풀이

  • 1.
  • 2.
    A. 끝말잇기 • 입력은조작된 사전이 들어온다. • 그러므로, 입력의 모든 영단어는 구성 알파벳이 정렬되어 있다. • 또한, 모든 조작된 단어가 사전순으로 정렬되어 들어온다. • 즉, 모든 단어가 차례대로 word[i-1].last == word[i].first를 만족하면 YES, 한 번이라도 만족하지 못하면 NO. 출제자: 김동이
  • 3.
    F. DNA 비밀번호 •가장 쉬운 풀이는 가능한 모든 경우를 전부 해보는 것 • 시간복잡도 O(PS) • 시간초과! • 현재 보고 있는 문자열 PiPi+1…Pi+s-1의 [‘A’, ‘C’, ‘G’, ‘T’]의 개수 • 다음 보게 되는 문자열 Pi+1Pi+2…Pi+s의 [‘A’, ‘C’, ‘G’, ‘T’]의 개수 • 두 문자열의 구성은 Pi, Pi+S 외에 모두 겹친다. • 배열을 사용하여 시간을 줄인다. cnt[4]에 카운팅한다. 출제자: 천민호
  • 4.
    C. Candy • 문제요약 • 𝑘=0 𝑛 2 𝑘 × 𝑛𝐶𝑘 • = 𝑘=0 𝑛 1 𝑛−𝑘 2 𝑘 × 𝑛𝐶𝑘 • = (1 + 2)n = 3n • 𝑘=1 𝑛 2 𝑘 × 𝑛𝐶𝑘 = 3 𝑛 − 1 출제자: 장홍준
  • 5.
    H. 사서왕 준서 •필요한 최소의 노동력 • 모든 책을 옮기는 노동력(sumf) – 쓰지 않아도 되는 최대의 노동력(maxf) • 옮기지 않아도 되는 비내림차순 책들의 노동력을 조사한다. • D[i]: i번째 책을 마지막으로 하는 비내림차순 책들의 노동력합의 최대값 • D[i] = max(D[j]) + f[i] //j = 0 ~ i-1 • 답: sumf – maxf • 시간복잡도: O(N2) 출제자: 김현정
  • 6.
    D. InterGrid • Vertex:출발점, 웜홀, 도착점 • Edge: 시작점->웜홀 / 웜홀 <-> 웜홀 / 웜홀->도착점 모든 Edge는 manhatan dist의 가중치를 가진다. 출제자: 송기선 S E 1 3 2 4
  • 7.
    D. InterGrid • 출발점-> 도착점 • Dijkstra Algorithm • 시간복잡도 O(V2) 출제자: 송기선
  • 8.
    E. Three-Tree • S는N2비례하는 크기 => 이런 모양의 트리를 구성할 수 있다. • 이 때 생기는 단순 경로의 개수 S = B * (A + B – 1) • B, (A + B – 1)을 S의 약수 쌍으로 정하면 되겠구나! • 그런데 S가 소수라면.. ? B = 1, A = S? 출제자: 전명우 S B개 A개
  • 9.
    E. Three-Tree • C개의노드를 추가해보자! • 늘어나는 단순 경로의 개수는 정확히 C개 • 길이 3인 단순 경로 개수 S = B * (A + B – 1) + C • 이제 S가 소수여도 C를 적절히 잘 정하자 • C 후보 개수 약 S개, B 후보 개수 약 S0.5개 • 시간복잡도 O(S1.5) 출제자: 전명우 S B개 A개 C개
  • 10.
    G. I.O.I • 1~N번째선수 => 0~N-1번 선수라고 하자. • D1 [i][j] / D2 [i][j] • i: 한국팀의 남은 선수들의 bitmask 표현 • j: 상대팀의 남은 선수들의 bitmask 표현 • Bitmask 표현 출제자: 조승현 10101110 0번째 선수가 남아 있다 1번째 선수가 없다 =1 + 4 + 16 + 32 + 64 = 117
  • 11.
    G. I.O.I • D1[i][j]: 한국팀이 선택할 차례일 때 한국이 승리하는 횟수의 기대값 • D2 [i][j]: 상대팀이 선택할 차례일 때 한국이 승리하는 횟수의 기대값 • D1 [i][j] = max(D2 [i – (1 << k)][j – (1 << l)] + pk,l) • D2 [i][j] = min(D1 [i – (1<< k)][j – (1 << l)]+ pk,l) • 답: D1[2n-1][2n-1], D2 [2n-1][2n-1] 출제자: 조승현
  • 12.
    B. 진격의 거인 •먼저, 삼각함수를 사용해 파괴된 영역 내부의 집들을 찾아낸 후 제외 • 두 집 사이의 거리 1. 두 집을 잇는 선분이 거인이 파괴한 영역을 지나지 않는 경우 2. 두 집을 잇는 선분이 거인이 파괴한 영역을 지나는 경우 출제자: 조승현 B A 경우 1 B A 경우 2
  • 13.
    B. 진격의 거인 •𝐴𝐵가 𝑂𝑃혹은 𝑂𝑄와 교차하는 경우 • 𝑐𝑐𝑤 𝑂, 𝑃, 𝐴 × 𝑐𝑐𝑤 𝑂, 𝑃, 𝐵 < 0 && 𝑐𝑐𝑤 𝑂, 𝑄, 𝐴 × 𝑐𝑐𝑤 𝑂, 𝑄, 𝐵 < 0 출제자: 조승현 B A O P Q • 두 집을 잇는 선분이 파괴된 영역을 지나는 경우?