pstopia Notes for Problem Solving Contest

[Easy] PatrolRoute

Topcoder SRM 542 Div1

Problem

격자 위에 아무렇게나 점 A, B, C 를 잡자. 중복을 고려하면 route는 A->B->C->A , A->C->B->A 두가지가 나오는데, 계산해보면 이 두 경우 모두 route 의 길이는 같고 구체적으로 점 A, B, C 를 포함하는 가장 작은 직사각형의 둘레의 길이와 같다는 사실을 알 수 있다. 따라서, 나올 수 있는 모든 직사각형을 다 살펴보면서 그 직사각형의 테두리에 점 3개를 배치하는 경우의 수를 구하고 그것들을 모두 더하면 된다. 점 3개를 배치했을 때, 이 직사각형이 그 점 3개를 포함하는 가장 작은 직사각형이 되어야 한다는 것을 주의해야 한다. 가로길이 n, 세로길이 m 인 직사각형에 점 A, B, C 를 꽉 차게 배치하는 경우의 수는 6 * (n-1) * (m-1) 이다. 이 크기의 직사각형이 나오는 경우의 수는 (Y-n) * (X-m) 이다. 직사각형이 minT, maxT 조건을 만족하는지 확인하는 것을 잊지 말자.