※ 글쓴이는 취미로 코딩을 익혀보는 사람이라 정확하지 않은 내용을 담고 있을 수 있다 ※

 

이번에 볼 문제는 백준 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

+ Recent posts