주제 링크 : http://acm.hdu.edu.cn/showproblem.php?pid=6581
아이디어 : 라인을 정지 1 마지막, 그것은 Duzhe 모든 차량 만 앞 차에 시간 후 영향을 남아있는 차 뒤에 있어야합니다. 때문에 차량의 속도에 항상 동일합니다, 그래서 우리는 답을 계산할 수 있습니다 :
처음부터 (정지선 거리에서 초기 총 이동하는 자동차칩니다 S I의 0 + 차량 사이의 차량 길이 [시그마 L I / V) I를 .
2.이 그래서 모든 차를 위해, 그것은 0으로 간주됩니다 함께 자동차의 가장 앞쪽에 연결해 차량, 당신은 값을 계산할 수 계산 된 최대 값은 모든 차량에 대한 대답입니다. 생각에 욕심 열심히, 나의 이해는 문제가 발생할하지 않도록 가장 긴 차를 빨리보다 자동차의 전면에서 가장 긴 자동차의 자동차의 뒷면을 차단하는 것입니다.
AC 코드 :
1 #include<bits/stdc++.h> 2 using namespace std; 3 const int maxn = 1e5 +5; 4 struct edge{ 5 double v,s,len; 6 }es[maxn]; 7 int main() 8 { 9 int n; 10 while(~scanf("%d",&n)) 11 { 12 int m = 1; 13 for(int i = 1;i <= n + 1;i++) scanf("%lf",&es[i].len); 14 for(int i = 1;i <= n + 1;i++) scanf("%lf",&es[i].s); 15 for(int i = 1;i <= n + 1;i++) scanf("%lf",&es[i].v); 16 double ans = 0; 17 double lazy = 0; 18 for(int i = 1;i <= n + 1;i++) 19 { 20 if(i != 1) lazy += es[i].len; 21 double t = (es[i].s + lazy) / es[i].v; 22 ans = max(t,ans); 23 } 24 printf("%.10f\n",ans); 25 } 26 return 0; 27 }