티스토리 뷰
풀이
처음 보는 유형의 dp. dp[i]의 정의를 사람을 i명 이상 구할 때 드는 최소비용이라 정의하자. 그러면 어떤 홍보 수단이 3원에 5명을 구할 수 있다고 가정할 때 dp[i]의 최솟값은 dp[i - 5] + 3, dp[i - 4] + 3, ... , dp[i - 1] + 3 중 하나가 된다. 모든 홍보 수단에 대해 최솟값을 찾아 업데이트 하면 답을 구할 수 있다.
코드
#include <bits/stdc++.h>
using namespace std;
typedef long long ll;
const int INF = 1e9;
int main() {
ios_base::sync_with_stdio(false);
cin.tie(NULL); cout.tie(NULL);
int c, n;
cin >> c >> n;
vector<pair<int, int>> a(n);
for (int i = 0; i < n; i++) {
cin >> a[i].first >> a[i].second;
}
int dp[c + 1];
dp[0] = 0;
for (int i = 1; i <= c; i++) {
dp[i] = INF;
for (auto j : a) {
for (int k = max(i - j.second, 0); k <= i - 1; k++) {
dp[i] = min(dp[i], dp[k] + j.first);
}
}
}
cout << dp[c];
return 0;
}
'컴퓨터공학 > Problem Solving' 카테고리의 다른 글
[백준/BOJ] 1000 : A+B (자바/Java) (0) | 2022.09.12 |
---|---|
백준 10473 (0) | 2021.01.31 |
백준 12713 (0) | 2021.01.26 |
백준 2336 (0) | 2021.01.24 |
백준 9345 (0) | 2021.01.24 |
댓글
공지사항
최근에 올라온 글
최근에 달린 댓글
- Total
- Today
- Yesterday
링크
TAG
- boj 1106
- boj 14868
- 백준 9345
- 제로베이스 스쿨
- 인간 대포
- 백준 14868
- boj 10473
- 백준 2336
- 제로베이스 백엔드 스쿨
- 백준 1106
- 백준 3006
- 백준 10775
- boj 9345
- 디지털 비디오 디스크
- 터보소트
- 백준 10473
- 백준 2243
- boj 3006
- boj 2336
- boj 12713
- boj 10775
- 백준 1280
- 부트 캠프
- 백준 12713
- boj 1280
- 백준 16562
- boj 2243
- 사탕상자
- Ugly Numbers
- boj 16562
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | |||
5 | 6 | 7 | 8 | 9 | 10 | 11 |
12 | 13 | 14 | 15 | 16 | 17 | 18 |
19 | 20 | 21 | 22 | 23 | 24 | 25 |
26 | 27 | 28 | 29 | 30 | 31 |
글 보관함