160110 weekly coding

22
Weekly Coding COCI 2013/2014 Contest #2 5번

Upload: weeklycoding

Post on 20-Jan-2017

161 views

Category:

Self Improvement


0 download

TRANSCRIPT

Page 1: 160110 weekly coding

Weekly CodingCOCI 2013/2014 Contest #2 5번

Page 2: 160110 weekly coding

9521 색칠공부

• 1 ~ N번의 그림

• K가지의 색

• i번째 그림의 색은 fi번 그림의 색과 다르게

• N, K <= 1,000,000

• 색칠할 수 있는 경우의 수?

Page 3: 160110 weekly coding

접근

• 경우의 수 => DP?

Page 4: 160110 weekly coding

접근

• 경우의 수 => DP?

• 그림의 수 100만, 색깔 수도 100만

• 망...

Page 5: 160110 weekly coding

그린다 !

• A -> B 는 A는 B와 색이 다르다는 뜻(fA = B)

• 각정점에서출발하는간선은하나씩만존재

Page 6: 160110 weekly coding

그린다 !

• A -> B 는 A는 B와 색이 다르다는 뜻(fA = B)

• 각정점에서출발하는간선은하나씩만존재

3

6 4

5

2

19

7 8

Page 7: 160110 weekly coding

그린다 !

• A -> B 는 A는 B와 색이 다르다는 뜻(fA = B)

• 각정점에서출발하는간선은하나씩만존재

3

6 4

5

2

19

7 8

Page 8: 160110 weekly coding

직선 형태

• V개의 정점이 직선 형태를 이룸

• 끝 정점의 색이 정해졌을 때, 나머지 정점의 색을 칠하는 경우의 수

321K – 3번 색 K - 어떤 색K - 2번 색

4어떤 색

Page 9: 160110 weekly coding

직선 형태

• V개의 정점이 직선 형태를 이룸

• 끝 정점의 색이 정해졌을 때, 나머지 정점의 색을 칠하는 경우의 수

321K – 3번 색 K - 어떤 색K - 2번 색

(K – 1) * (K – 1) * .. = (K – 1)^(V – 1)

4어떤 색

Page 10: 160110 weekly coding

원형 형태

• V개의 정점이 Cycle을 이룸

• Cycle의 모든 정점들의 색을 칠하는 경우의 수

21

Page 11: 160110 weekly coding

원형 형태

• V개의 정점이 Cycle을 이룸

• Cycle의 모든 정점들의 색을 칠하는 경우의 수

21

K * (K – 1)

Page 12: 160110 weekly coding

원형 형태

• V개의 정점이 Cycle을 이룸

• Cycle의 모든 정점들의 색을 칠하는 경우의 수

2

1

3

Page 13: 160110 weekly coding

원형 형태

• V개의 정점이 Cycle을 이룸

• Cycle의 모든 정점들의 색을 칠하는 경우의 수

2

1

K * (K – 1) * (K – 2)

3

Page 14: 160110 weekly coding

원형 형태

• V개의 정점이 Cycle을 이룸

• Cycle의 모든 정점들의 색을 칠하는 경우의 수

2

1

3

5

4

X != Y

V-1개

Color X Color Y

Page 15: 160110 weekly coding

원형 형태

• V개의 정점이 Cycle을 이룸

• Cycle의 모든 정점들의 색을 칠하는 경우의 수

2

1

3

5

4V개

X != YColor X Color Y

Color ZZ != X, Z != Y

Page 16: 160110 weekly coding

원형 형태

• V개의 정점이 Cycle을 이룸

• Cycle의 모든 정점들의 색을 칠하는 경우의 수

2

1

3

5

4V개

X != YColor X Color Y

Color ZZ != X, Z != YP[V] = P[V–1] * (K-2)

Page 17: 160110 weekly coding

원형 형태

• V개의 정점이 Cycle을 이룸

• Cycle의 모든 정점들의 색을 칠하는 경우의 수

X != Y

2

1

3

5

4V-2개

Color X Color Y

6

Page 18: 160110 weekly coding

원형 형태

• V개의 정점이 Cycle을 이룸

• Cycle의 모든 정점들의 색을 칠하는 경우의 수

2

1

3

5

4V개

Color X Color Y

Color Z

6X != Y

Color X

Z != X

Page 19: 160110 weekly coding

원형 형태

• 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

Page 20: 160110 weekly coding

Cycle 구성 정점

• Cycle을 탐색하면서 방문 번호를 붙인다.

• 한 바퀴 돌아서 왔을 때, (방문 번호) – (이전 방문 번호)가

해당 Cycle을 구성하는 정점의 개수가 된다.

Page 21: 160110 weekly coding

답!

• 각 Cycle의 구성 정점 개수에 따른 칠하는 방법의 수의 곱과

• (K – 1)^Cycle에 속하지 않은 정점의 개수

Page 22: 160110 weekly coding

답!

• 각 Cycle의 구성 정점 개수에 따른 칠하는 방법의 수의 곱과

• (K – 1)^Cycle에 속하지 않은 정점의 개수

• Mod 연산만 잘 해주면 되는수학문제