반응형
https://www.acmicpc.net/problem/1106
1106번: 호텔
첫째 줄에 C와 형택이가 홍보할 수 있는 도시의 개수 N이 주어진다. C는 1,000보다 작거나 같은 자연수이고, N은 20보다 작거나 같은 자연수이다. 둘째 줄부터 N개의 줄에는 각 도시에서 홍보할 때
www.acmicpc.net
[ 문제풀이 ]
1. 홍보 비용과 효과를 입력받고, pair<int, int> arr 배열에 저장합니다.
2. cus[ i ] 배열을 만들어 i명의 손님을 받았을 때 최소 비용을 저장합니다.
3. cus[ j + arr[ i ].second ] = min(cus[ j + arr[ i ].second ], cus[ j ] + arr[ i ].first) 의 점화식을 통해 배열을 갱신해 줍니다.
4. j의 값이 C보다 크거나 같을 때 최솟값을 ans에 저장합니다.
5. ans를 출력합니다.
[ 소스코드 ]
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 | #include<iostream> using namespace std; int C, N; pair<int, int> arr[20]; int cus[1111]; int ans = 987654321; int main() { scanf("%d %d", &C, &N); fill(cus+1, cus + 1111, 987654321); for (int i = 0; i < N; i++) { scanf("%d %d", &arr[i].first, &arr[i].second); } for (int i = 0; i < N; i++) { for (int j = 0; j < C; j++) { cus[j + arr[i].second] = min(cus[j + arr[i].second], cus[j] + arr[i].first); if (j + arr[i].second >= C) { ans = min(ans, cus[j + arr[i].second]); } } } printf("%d", ans); } | cs |
반응형
'백준' 카테고리의 다른 글
[ 백준 ] 1414번 - 불우이웃돕기 (C++) (0) | 2023.03.13 |
---|---|
[ 백준 ] 14950번 - 정복자 (C++) (0) | 2023.03.12 |
[ 백준 ] 1240번 - 노드사이의 거리 (C++) (0) | 2023.03.10 |
[ 백준 ] 1068번 - 트리 (C++) (0) | 2023.03.09 |
[ 백준 ] 27009번 - Out of Hay (C++) (0) | 2023.03.08 |