HDU 최초의 멀티 학교 필드 1004 (hdu6581) 휴가 기호

문제의 의미 N + 1 차량은 각각 차량의 길이 거리, 속도 및 종점의 거리를 가지며, 거기에는 1-N은 순차적으로 최종면에, 차량의 전방에서 차량 (0)가 배치되어있다. 차 잡을 수있는 자동차의 전면 일단 자동차가 결승선에 도달 할 수 신속하게 0 차를 찾을 느려집니다 추월을 허용하지 않습니다?

아이디어 : 심지어 긴 문자열, 꼬리 끝의 긴 목록을 통해 차의 속도로이 운전 시간의 긴 목록으로, 뒤에 모든 가상 자동차를 잡기 위해 각 차하십시오.

그러나 사실 모든 자동차는 각각 그래서, 너무 빨리, 그것은 빠른 속도로 이어질 수 뒤에 차를 따라 잡기 위해 이어질 수, 앞으로 자신의 페이스에 하나의 긴 문자열 등으로 앞 차량으로 제한됩니다 연결할 수 있습니다 차량 상태가 시간이 지남에 따라 결정 되어도으로 긴 문자열 용액의 최대 값을 취한다.

O의 시간 복잡도 (N)

코드 :

#INCLUDE <. 비트 / stdc ++ H>
 의 #pragma GCC의 최적화 (2)
 사용  스페이스 성병; 
타입 정의  LL;
#DEFINE LS (RT << 1)
 #DEFINE의 RS (RT << 1 | 1)
 CONST의  INT M + 1E5 = 5 ;
CONST LL의 개조 1E9 + = 7 ;
CONST   EPS 1e- = 11 ;
CONST  이중 PI ACOS = (- 1 );
CONST  INT INF = 0x3f3f3f3f ;
CONST의  INT maxn 2E5 + = 10 ;
CONST INT N가 = 32 ;
INT의 N; 
LL S [M], L [M], V [M]; 
이중 ANS;
INT 의 main () 
{ 
    동안 (~는 scanf ( " %의 D ' , N)) 
    { 
        위해 ( int로 I = 1 ; i가 <= N + 1 ] 나가 ++ ) 
        { 
            는 scanf ( " %의 LLD ' , L [I]); 
        } 
        에 대해 ( int로 I = 1 ; i가 <= N + 1 난 ++] ) 
        { 
            (는 scanf을" %의 LLD " , S [I]); 
        } 
        에 대해 ( int로 I = 3 , i가 <= N + 1 ] 나가 ++ ) 
        { 
            L [I] = 1 [내가] + L [I - 1 ]; 
        } 
        에 대해 ( int로 I = 1 ; i가 <= N + 1 난 ++] ) 
        { 
            는 scanf ( " %의 LLD를 " , V [I]); 
        } 
        ANS = ( 더블 ) 1.0 * S [ 1 ] / V [ 1];
        위한 ( int로 I = 2 ; 나는 <= N + 1 ] 나가 ++ ) 
        { 
            이중 TMP = 1.0 * (L [I] + S [I]) / V [I]; 
            ANS = 최대 (TMP, ANS); 
        } 
        의 printf ( " % .10f \ 없음 " , ANS); 
    } 
}

 

추천

출처www.cnblogs.com/isakovsky/p/11246132.html