Notice
Recent Posts
Recent Comments
Link
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | ||||
4 | 5 | 6 | 7 | 8 | 9 | 10 |
11 | 12 | 13 | 14 | 15 | 16 | 17 |
18 | 19 | 20 | 21 | 22 | 23 | 24 |
25 | 26 | 27 | 28 | 29 | 30 | 31 |
Tags
- 안동국시
- RED CAT COFFEE X LOUNGE
- 데이트
- 파버스
- 발산
- 스코티쉬 스트레이트
- 발산맛집
- 고양이
- 스테이크
- coffee
- 스파게티
- 커플
- 소호정본점
- 양재맛집
- 파머스테이블
- 치명적 귀여움
- 레스토랑
- 발산역 근처 카페
- CDJ
- A. Steed 2: Cruise Control
- codejam
- 부모님과
- CodeJam 2017 Round 1B
- 소호정
- 카페
- 냥스토리
- 먹기좋은곳
- 고양이는 언제나 귀엽다
- 냥냥
- 냥이
Archives
- Today
- Total
hubring
[CDJ] 2017 Round 1B - A. Steed 2: Cruise Control 본문
문제 링크
CodeJam 2017 Round 1B A번 문제 Steed 2: Cruise Control
[CodoeJam]
[백준 알고리즘]
참고(Small) : https://www.acmicpc.net/problem/14797
참고(Large) : https://www.acmicpc.net/problem/14804
문제 요약
- Annie는 말을 타고 한 줄로된 길을 달린다.
- Annie의 시작 위치는 0 이고 목적지는 D 킬로미터 떨어져 있다.
- Annie와 목적지 사이에는 N 마리의 말이 있다.
- N마리의 말은 각각 K(i) 위치에 시간 당 최대 S(i)로 달릴 수 있다.
- 말들은 자신보다 앞에 있는 말보다 속도가 빨라 따라잡을 경우 이전 말의 속도와 일정하게 달린다.
- Annie가 다른 말을 앞서가지 않고 목적지까지 일정한 속도로 달릴 때 가능한 최대 속도는?
입출력
입력
T(테스트 케이스 수)
D(목적지 위치) N (말의 수)
K(i) S(i) (i번째 말의 위치와 속도) -> N번 반복
출력
각 테스트 케이스는 "Case #x:" 로 표시하며 그 다음 줄에 결과를 출력한다.
Annie의 말이 달릴 수 있는 최대 속도를 출력한다.
Limits
1 ≤ T ≤ 100.
0 < Ki < D ≤ 109, for all i.
Ki ≠ Kj, for all i ≠ j. (No two horses start in the same position.)
1 ≤ Si ≤ 10000.
Small dataset
1 ≤ N ≤ 2.
Large dataset
1 ≤ N ≤ 1000.
예제 입력
3
2525 1
2400 5
300 2
120 60
60 90
100 2
80 100
70 10
예제 출력
Case #1: 101.000000
Case #2: 100.000000
Case #3: 33.333333
문제 해설
이 문제는 Annie 앞의 말 중 목적지까지 달릴 때 걸리는 시간이 최대인 말을 구하면 되는 문제이다.
목적지까지 달리는 시간이 최대인 말을 뒷 말이 절대 앞설 수 없으므로
Annie가 목적지까지 도달할 수 있는 최소 시간은 목적지까지 달리는 시간이 최대인 말의 시간과 같다.
따라서 Annie의 최대 속도는 아래와 같다.
결국 목적지 까지 달릴 때 걸리는 시간이 최대인 말의 시간만 찾으면 되므로 O(N)의 시간 복잡도를 가진다.
소스 코드
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
// | |
// CDJ_Cruise Control.cpp | |
// algorithm | |
// | |
// Created by Hubring on 2019. 2. 23.. | |
// Copyright © 2019년 hubring. All rights reserved. | |
// | |
#include <stdio.h> | |
#include <iostream> | |
using namespace std; | |
void solve(){ | |
int D,N; | |
scanf("%d %d", &D, &N); | |
double maxTimeSpan = 0.0; | |
for(int i=0; i<N; i++){ | |
int K, S; | |
scanf("%d %d", &K, &S); | |
double tiemSpan = (double)(D-K)/S; | |
if( tiemSpan > maxTimeSpan ){ | |
maxTimeSpan = tiemSpan; | |
} | |
} | |
double mySpeed = D/maxTimeSpan; | |
printf("%lf\n", mySpeed ); | |
} | |
int main(){ | |
int testCase; | |
scanf("%d", &testCase); | |
for(int i=0; i<testCase; i++){ | |
printf("Case #%d: ", i+1); | |
solve(); | |
} | |
return 0; | |
} |
'Algorithm > 코드잼' 카테고리의 다른 글
[CDJ] 2017 Round 1A - B. Ratatouille (0) | 2019.02.27 |
---|---|
[CDJ] 2017 Round 1A - A. Alphabet Cake (0) | 2019.02.20 |