https://www.acmicpc.net/problem/25257
문제 요약
d개의 문중 하나에 유물이 들어있다. 처음에 문중 s개를 선택한다. 그럼 선택하지 않는 상자 중 유물이 없는 문 e개가 열린다. 그 후 선택을 바꿀 수 있다. 최선으로 선택했을 때 유물이 있는 문을 선택할 확률을 구해라.
풀이 (1)
- 수학
처음엔 그냥 s/(d-e)가 아닌가 생각했다. 하지만 1번 예제부터 틀려서 경우의 수를 잘 따져봤다. 첫 선택에서 맞출 확률은 당연히 s/d다. 첫 선택 이후 분모가 줄어들기 때문에 바꿀 수 있는 만큼 바꾸는게 무조건 이득이다.
(바꾼 수*바꿔서 맞출확률) + (안 바꾼 수*처음 확률) 코드로 짜면 된다.
#include <bits/stdc++.h>
using namespace std;
#define ll long long
#define all(v) v.begin(),v.end()
#define rall(v) v.rbegin(),v.rend()
#define mid (st+en>>1)
int main() {
cin.tie(0)->sync_with_stdio(0);
double d,s,e;cin>>d>>s>>e;
double ans=(max(double(0),s-d+s+e)*s/d/s+min(s,d-s-e)*(d-s)*s/d/(d-s-e)/s);
cout<<fixed<<setprecision(8)<<ans;
}
'풀이' 카테고리의 다른 글
[백준] 3360 - 깡총깡총 (c++) (1) | 2025.01.10 |
---|---|
[백준] 2419 - 사수아탕 (c++) (0) | 2025.01.10 |
[백준] 1626 - 두 번째로 작은 스패닝 트리 (c++) (1) | 2025.01.08 |
[백준] 1278 - 연극 (c++) (0) | 2025.01.08 |
[백준] 1126 - 같은 탑 (c++) (0) | 2025.01.07 |