160110 weekly coding
TRANSCRIPT
Weekly CodingCOCI 2013/2014 Contest #2 5번
9521 색칠공부
• 1 ~ N번의 그림
• K가지의 색
• i번째 그림의 색은 fi번 그림의 색과 다르게
• N, K <= 1,000,000
• 색칠할 수 있는 경우의 수?
접근
• 경우의 수 => DP?
접근
• 경우의 수 => DP?
• 그림의 수 100만, 색깔 수도 100만
• 망...
그린다 !
• A -> B 는 A는 B와 색이 다르다는 뜻(fA = B)
• 각정점에서출발하는간선은하나씩만존재
그린다 !
• A -> B 는 A는 B와 색이 다르다는 뜻(fA = B)
• 각정점에서출발하는간선은하나씩만존재
3
6 4
5
2
19
7 8
그린다 !
• A -> B 는 A는 B와 색이 다르다는 뜻(fA = B)
• 각정점에서출발하는간선은하나씩만존재
3
6 4
5
2
19
7 8
직선 형태
• V개의 정점이 직선 형태를 이룸
• 끝 정점의 색이 정해졌을 때, 나머지 정점의 색을 칠하는 경우의 수
321K – 3번 색 K - 어떤 색K - 2번 색
4어떤 색
직선 형태
• V개의 정점이 직선 형태를 이룸
• 끝 정점의 색이 정해졌을 때, 나머지 정점의 색을 칠하는 경우의 수
321K – 3번 색 K - 어떤 색K - 2번 색
(K – 1) * (K – 1) * .. = (K – 1)^(V – 1)
4어떤 색
원형 형태
• V개의 정점이 Cycle을 이룸
• Cycle의 모든 정점들의 색을 칠하는 경우의 수
21
원형 형태
• V개의 정점이 Cycle을 이룸
• Cycle의 모든 정점들의 색을 칠하는 경우의 수
21
K * (K – 1)
원형 형태
• V개의 정점이 Cycle을 이룸
• Cycle의 모든 정점들의 색을 칠하는 경우의 수
2
1
3
원형 형태
• V개의 정점이 Cycle을 이룸
• Cycle의 모든 정점들의 색을 칠하는 경우의 수
2
1
K * (K – 1) * (K – 2)
3
원형 형태
• V개의 정점이 Cycle을 이룸
• Cycle의 모든 정점들의 색을 칠하는 경우의 수
2
1
3
5
4
X != Y
V-1개
Color X Color Y
원형 형태
• V개의 정점이 Cycle을 이룸
• Cycle의 모든 정점들의 색을 칠하는 경우의 수
2
1
3
5
4V개
X != YColor X Color Y
Color ZZ != X, Z != Y
원형 형태
• V개의 정점이 Cycle을 이룸
• Cycle의 모든 정점들의 색을 칠하는 경우의 수
2
1
3
5
4V개
X != YColor X Color Y
Color ZZ != X, Z != YP[V] = P[V–1] * (K-2)
원형 형태
• V개의 정점이 Cycle을 이룸
• Cycle의 모든 정점들의 색을 칠하는 경우의 수
X != Y
2
1
3
5
4V-2개
Color X Color Y
6
원형 형태
• V개의 정점이 Cycle을 이룸
• Cycle의 모든 정점들의 색을 칠하는 경우의 수
2
1
3
5
4V개
Color X Color Y
Color Z
6X != Y
Color X
Z != X
원형 형태
• V개의 정점이 Cycle을 이룸
• Cycle의 모든 정점들의 색을 칠하는 경우의 수
2
1
3
5
4V개
Color X Color Y
Color Z
P[V] = (P[V-1] * (K–2)) + (P[V–2] * (K-1))
6X != Y
Color X
Z != X
Cycle 구성 정점
• Cycle을 탐색하면서 방문 번호를 붙인다.
• 한 바퀴 돌아서 왔을 때, (방문 번호) – (이전 방문 번호)가
해당 Cycle을 구성하는 정점의 개수가 된다.
답!
• 각 Cycle의 구성 정점 개수에 따른 칠하는 방법의 수의 곱과
• (K – 1)^Cycle에 속하지 않은 정점의 개수
답!
• 각 Cycle의 구성 정점 개수에 따른 칠하는 방법의 수의 곱과
• (K – 1)^Cycle에 속하지 않은 정점의 개수
• Mod 연산만 잘 해주면 되는수학문제