[BOJ] 1328번: 고층 빌딩

https://www.acmicpc.net/problem/1328


DP[i][j]를 빌딩 i개가 있을 때, 왼쪽에서 j개가 보이는 경우의 수라고 해봅시다. 그러면 빌딩 i개에서 가장 높은 빌딩을 왼쪽에서 a번째에 배치했을 때의 상황을 생각해보면 DP[a][j-1]*(i-1-a)-th factorial * combination(i-1,a) 만큼의 경우의 수가 더해집니다. 이를 이용해 DP 테이블을 채우고, 이제 원래 구해야하는 N, L, R에 대해서도 비슷한 방식으로 가장 높은 빌딩을 어딘가에 배치한 이후의 상황을 생각하면 됩니다.


https://github.com/blisstoner/BOJ/blob/master/1328.cpp

'알고리즘 > BOJ' 카테고리의 다른 글

[BOJ] 2150번: Strongly Connected Component  (0) 2018.06.25
[BOJ] 3012번: ZAPIS  (0) 2018.06.25
[BOJ] 1720번: 타일 코드  (0) 2018.06.24
[BOJ] 2228번: 구간 나누기  (0) 2018.06.22
[BOJ] 1708번: 볼록 껍질  (0) 2018.06.22
[BOJ] 15684번: 사다리 조작  (2) 2018.06.22
  Comments