※ 글쓴이는 취미로 코딩을 익혀보는 사람이라 정확하지 않은 내용을 담고 있을 수 있다 ※
이번에 볼 문제는 백준 26553번 문제인 Work이다.
문제는 아래 링크를 확인하자
https://www.acmicpc.net/problem/26553
26553번: Work
You own a company that hires painters to paint houses. You can hire as many painters as you want, but for every painter you hire, you have to pay X dollars (independent of how long the painter works on the house). In addition, you have to pay a penalty of
www.acmicpc.net
고용할 사람의 수를 N이라 하면 지출하게 될 비용은 NX+KP/N으로 계산해낼 수 있다.
위 값은 N이 양수인 경우 N이 증가함에 따라 그 값이 단조감소하다가 단조증가함을 관찰하자.
이를 이용해 값이 증가하는 지점을 찾을 때까지 N의 값을 1부터 1씩 증가시켜보는 것으로 문제를 해결할 수 있다.
아래는 제출한 소스코드이다.
#include <iostream>
using namespace std;
typedef long double ld;
int T;
int main() {
ios::sync_with_stdio(0);
cin.tie(0);
cout << fixed;
cout.precision(3);
cin >> T;
while (T--) {
int N = 1;
ld ans = 2000000007;
ld K, P, X; cin >> K >> P >> X;
while (1) {
ld val = X * N + (K * P) / N;
if (val < ans) ans = val, N++;
else break;
}
cout << ans << '\n';
}
}
728x90
'BOJ' 카테고리의 다른 글
[BOJ 6903 // C++] Trident (0) | 2022.12.23 |
---|---|
[BOJ 26736 // C++] Wynik meczu (0) | 2022.12.23 |
[BOJ 5353 // C++] Open Intervals (0) | 2022.12.23 |
[BOJ 21771 // C++] 가희야 거기서 자는 거 아니야 (0) | 2022.12.23 |
[BOJ 12791 // C++] Starman (0) | 2022.12.23 |