HDU 6581 휴가

주제 링크 : 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 }

 

추천

출처www.cnblogs.com/Carered/p/11228330.html