문제 링크
- http://icpc.me/14305
사용 알고리즘
- DP
- 세그먼트 트리
풀이
배낭의 무게가 $[A_i, B_i]$라는 구간으로 표현되는 0/1 냅색 문제입니다.
$D(i, j)$를 i번째 물건까지 고려했을 때, 무게의 합이 j가 되는 최소 가치로 정의해서 DP를 하면 됩니다.
상태 전이를 생각해봅시다.
무게의 합이 j가 되기 위해서는, 기존 무게가 $[j-B_i, j-A_i]$ 범위에 있어야 합니다. 그러므로 Deque나 Segment Tree 등으로 구간의 최솟값을 구하면 시간 내에 문제를 풀 수 있습니다.
전체 코드
1 |
|