티스토리 툴바


간단한 물리계산으로 풀 수 있는 문제이다

거리와 최대 가속도 그리고 최대 속도가 정해진 상태에서

최단 시간을 묻는 문제인데

다음의 두 가지 경우로 나눠서 생각할 수 있다.

1. 자동차가 최대속도까지 가기전에 다시 속도를 줄이는 경우

2. 자동차가 최대속도에 도착한 다음에 일정 거리를 달린 다음에 속도를 줄이는경우

#include <iostream>
#include <cmath>

using namespace std;

class  Subway2 {
public :
 double minTime(int length, int maxAcceleration, int maxVelocity)
 {
  double len, a, vmax, t_len;
  len  = (double)length;    // casting을 위하여 저장
  a  = (double)maxAcceleration;  
  vmax = (double)maxVelocity;  
  t_len = (vmax*vmax)/a;    // vmax까지 속도를 올렸다가 내려왔을때의 거리

  if(len < t_len) {
   return 2.0*sqrt(len/a);
  }
  else {
   return (len - t_len)/vmax + (vmax/a)*2;
  }
 }
};

'TopCoder' 카테고리의 다른 글

SRM 145 DIV2 250 - ImageDithering  (2) 2011/01/15
SRM 415 DIV2 250 CollectingUsualPostmarks  (0) 2008/09/03
SRM 413 DIV2 250 Subway2  (0) 2008/08/20
Posted by yongseok