페이지를 불러오는 중…
해결한 사람
1
명
정답률
100.00
%
시간 제한
30000
ms
메모리 제한
1024
MB
당신은 비디오 게임을 하고 있으며, 죽지 않고 모든 레벨을 연속으로 완료하면 업적을 달성하게 된다. 레벨은 어떤 순서로든 플레이할 수 있으며, 레벨을 플레이할 때마다 그 레벨을 완료하거나 죽게 된다. 각 레벨에는 완료할 확률이 있고, 플레이하는 데 일정한 시간이 걸린다. 업적을 달성하는 데 걸리는 기댓값을 최소화하려면 레벨을 어떤 순서로 플레이해야 하는가? 레벨을 완료하는 데 걸리는 시간과 그 레벨에서 죽는 데 걸리는 시간이 같으며, 죽는 즉시 정한 순서의 첫 레벨부터 다시 시작한다고 가정한다.
참고: 레벨을 완료하지 못하더라도 당신이 실제로 죽는 것은 아니며, 게임 속 캐릭터만 죽는다. 그렇지 않다면 이 업적을 달성하려는 사람은 소수에 불과할 것이다.
메모리 제한: 1GB. 시간 제한: 테스트 세트당 20초. 1 ≤ T ≤ 100. 0 ≤ < 100.
1 ≤ N ≤ 20. = 1.
1 ≤ N ≤ 1000. 1 ≤ ≤ 100.
입력의 첫 줄에는 테스트 케이스의 수 T가 주어진다. 이어서 T개의 테스트 케이스가 주어지며, 각 테스트 케이스는 세 줄로 이루어진다. 각 테스트 케이스의 첫 줄에는 레벨의 수를 나타내는 정수 N 하나가 주어진다. 둘째 줄에는 공백으로 구분된 N개의 정수 가 주어진다. 는 레벨 i을 플레이하는 데 걸리는 초 단위 시간이며, 이는 해당 레벨을 완료하는지 죽는지와 무관하다. 셋째 줄에는 공백으로 구분된 N개의 정수 가 주어진다. 는 레벨 i을 완료하려는 각 시도에서 죽을 확률을 백분율로 나타낸 값이다.
각 테스트 케이스마다 "Case #x: "를 포함하는 한 줄을 출력한다. 여기서 x는 테스트 케이스 번호이며, 1부터 시작한다. 그 뒤에 공백으로 구분된 N개의 정수를 출력한다. 목록의 j^{번째} 정수는 업적을 달성하는 데 소비할 것으로 기대되는 시간을 최소화하기 위해 j^{번째}로 완료를 시도해야 하는 레벨의 인덱스여야 한다.
인덱스의 범위는 0부터 N-1까지이다. 동일한 기대 시간을 만드는 순서가 여러 개라면 사전순으로 가장 앞선 순서를 출력한다. 두 순서 중 처음으로 값이 다른 위치에서 더 작은 인덱스를 갖는 순서가 사전순으로 더 작다. 여러 순서 중 다른 모든 순서보다 사전순으로 더 작은 순서가 사전순으로 가장 앞선 순서이다.
3
4
1 1 1 1
50 0 20 20
3
100 10 1
0 50 0
3
100 80 50
40 20 80
Case #1: 0 2 3 1
Case #2: 1 0 2
Case #3: 2 0 1
둘째 예제와 셋째 예제는 작은 입력의 제한을 만족하지 않는다.
Copyright Google LLC; sourced from the Google Coding Competitions Archive.
로그인 상태를 확인하는 중입니다.