티스토리 뷰
\(T\)의 제한이 작다는 부분에서 힌트를 얻었다.
우선 버튼의 순서는 중요하지 않다는 것은 당연하고,
같은 버튼을 두 번 이상 사용할 필요가 없다는 것도 당연하다.
그러면 이제 왼쪽부터 차례대로 이 버튼을 사용할지 말지를 결정하면 되는데,
이 부분을 DP로 결정한다.
여러 방법이 있겠지만, \(D_{ij}\)를 \(i\)번째 전구부터 \(T\)개의 상태가 \(j\)일 때, \(i\)번째 전까지 켜진 불의 개수로 정했다. (왜냐면, \(i\)번째 전구의 앞은 더 이상 바꿀 일이 없고, 앞으로 \(T\)개는 현재 영향을 미치는 범위다.)
\(j\)는 비트를 이용해 나타낼 수 있고, 버튼의 순서는 버튼을 눌렀을 때마다 기록해둬서 찾으면 된다.
비트를 사용하는 DP라는걸 알아채서 다행인데, 비트가 나오면 머리가 정리가 안 돼서 코드를 못 쓰겠다.
'문제' 카테고리의 다른 글
BOJ 2867 수열의 값 (0) | 2018.11.11 |
---|---|
Codeforces 1070C Cloud Computing (0) | 2018.11.11 |
BOJ 12945 재미있는 박스 정리 (0) | 2018.09.26 |
BOJ 12932 노래방 (0) | 2018.09.20 |
BOJ 2171 직사각형의 개수 (0) | 2018.08.12 |
댓글