페이지를 불러오는 중…
해결한 사람
1
명
정답률
20.00
%
시간 제한
2000
ms
메모리 제한
2048
MB
당신은 나일강을 통해 개 유물을 운반하려고 한다. 유물들은 부터 까지 번호가 붙어있다. 유물 ()의 무게는 이다.
유물들을 운반하기 위해, 당신은 특별한 보트를 사용할 수 있다. 각 보트는 최대 두 개의 유물을 운반할 수 있다.
유물을 운반하기 위해서, 당신은 같은 보트에 운반되는 유물의 수에 따라 결정되는 비용을 지불해야 한다. 유물 ()를 운반하는 비용은 다음과 같다:
후자의 경우에, 한 보트의 두 유물에 대해 모두 비용을 지불해야 한다는 점에 주목하자. 구체적으로, 당신이 한 보트에 유물 와 ()를 운반하기로 결정하면, 비용 을 지불해야 한다.
보트에 하나의 유물만 운반하는 것은 두 개를 운반하는 것보다 항상 비싸다. 따라서 인 모든 에 대해서, .
불행히도, 강은 매우 예측 불가능하고, 의 값은 자주 바뀐다. 당신은 부터 까지 번호 붙여진 개 질의에 답해야 한다. 질의들은 길이 의 배열 로 표현된다. 질의 ()의 답은 의 값이 일 때 개 유물 모두를 운반하는 최소 비용이다.
다음 함수를 구현해야 한다.
std::vector<long long> calculate_costs(
std::vector<int> W, std::vector<int> A,
std::vector<int> B, std::vector<int> E)
| Subtask | Score | Additional Constraints |
|---|---|---|
| 1 | ; ; 인 각 에 대해, | |
| 2 | ; 인 각 에 대해, | |
| 3 | ; 인 각 에 대해, 와 | |
| 4 | ; | |
| 5 | ||
| 6 | 인 각 에 대해, 와 | |
| 7 | 추가적인 제약 조건이 없다. |
다음 호출을 생각해보자.
calculate_costs([15, 12, 2, 10, 21],
[5, 4, 5, 6, 3],
[1, 2, 2, 3, 2],
[5, 9, 1])
이 예제에서, 개 유물과 개 질의가 있다.
첫번째 질의에서, . 당신은 한 보트에 유물 과 을 운반할 수 있고 ( 때문), 나머지 유물들은 한 보트에 한 개씩 운반한다. 이것이 모든 유물을 운반하는 최소 비용을 유도하고 이 최소 비용은 이다.
두번째 질의에서, . 당신은 한 보트에 유물 과 을 운반하고( 때문) 한 보트에 유물 와 을 운반할 수 있다 ( 때문). 나머지 유물은 한 보트에 한 개씩 운반할 수 있다. 이것이 모든 유물을 운반하는 최소 비용을 유도하고 이 최소 비용은 이다.
마지막 질의에서, . 당신은 한 보트에 유물을 한 개씩만 운반한다. 이것이 모든 유물을 운반하는 최소 비용을 유도하고 이 최소 비용은 이다.
그러므로, 이 함수는 을 반환해야 한다.
N
W[0] A[0] B[0]
W[1] A[1] B[1]
...
W[N-1] A[N-1] B[N-1]
Q
E[0]
E[1]
...
E[Q-1]
R[0]
R[1]
...
R[S-1]
여기서, 는 calculate_costs에 의해 반환된 배열 의 길이다.
5
15 5 1
12 4 2
2 5 2
10 6 3
21 3 2
3
5
9
1
16
11
23
International Olympiad in Informatics (IOI) 2024, official task package and official Korean translation.
Reporch에서 한국어 번역, 수식 표기, 이미지 호스팅 및 형식을 수정했습니다.
로그인 상태를 확인하는 중입니다.