※ 글쓴이는 취미로 코딩을 익혀보는 사람이라 정확하지 않은 내용을 담고 있을 수 있다 ※
이번에 볼 문제는 백준 32686번 문제인 DPS이다.
문제는 아래 링크를 확인하자.
https://www.acmicpc.net/problem/32686
각 스킬에 대하여, \([L,R]\)에 포함된 스킬 시전 시간을 구해 그 시간과 단위시간당 damage를 곱해 문제를 해결하자.
\([L,R]\)에 포함된 스킬 시전 시간은 \([0,R]\)에 포함된 스킬 시전 시간에서 \([0,L]\)에 포함된 스킬 시전 시간을 빼는 것으로 편하게 계산할 수 있다.
아래는 제출한 소스코드이다.
#include <iostream>
using namespace std;
typedef long long ll;
typedef long double ld;
ll N, S, E;
ld ans;
int main() {
ios::sync_with_stdio(0);
cin.tie(0);
cin >> N >> S >> E;
while (N--) {
ll x, y, t, z; cin >> x >> y >> z;
ans += (E / (x + y)) * z;
t = max(0LL, E % (x + y) - x);
ans += (ld)t / y * z;
ans -= (S / (x + y)) * z;
t = max(0LL, S % (x + y) - x);
ans -= (ld)t / y * z;
}
cout << fixed;
cout.precision(12);
cout << ans / (E - S);
}
728x90
'BOJ' 카테고리의 다른 글
[BOJ 32788 // C++] Big Integers (0) | 2024.11.26 |
---|---|
[BOJ 32795 // C++] Intuitive Elements (0) | 2024.11.25 |
[BOJ 32685 // C++] 4-LSB (0) | 2024.11.21 |
[BOJ 32722 // C++] Juta teekond (2) | 2024.11.20 |
[BOJ 32674 // C++] Palindromic Word Search (1) | 2024.11.19 |