ZOJ 3607 Lazier Salesgirl(贪心)

题目:http://acm.zju.edu.cn/onlinejudge/showProblem.do?problemCode=3607

题意:一个卖面包的小姑娘,给第i个来买面包的人的价格是pi, 每个人的时间是ti,

问用最小的时间间隔 求最大的平均值。

刚开始没有 考虑,后一个的时间间隔要大于之前的最大的时间间隔 才行。。。

 1 #include <iostream>
 2 #include <cstdio>
 3 #include <cstring>
 4 #include <cstdlib>
 5 #include <algorithm>
 6 using namespace std;
 7 const int maxn = 1000+10;
 8 const int INF = 1<<28;
 9 int p[maxn], t[maxn];
10 
11 int main()
12 {
13     int i, j, T, n;
14     double sum, ty, tty;
15     double Maxaver, x, Mint;
16     while(~scanf("%d", &T))
17     {
18         while(T--)
19         {
20             Maxaver = -INF;
21             tty = -INF;
22             Mint = INF;
23             sum = 0;
24             scanf("%d", &n);
25             for(i = 1; i <= n; i++)
26             scanf("%d", &p[i]);
27             for(j = 1; j <= n; j++)
28             scanf("%d", &t[j]);
29 
30             t[n+1] = INF;   //初始一个最大值
31             for(i = 1; i <= n; i++)
32             {
33                 ty = t[i] - t[i-1];
34                 if(ty > tty)
35                 tty = ty;
36                 sum+=p[i];
37                 x = sum*1.0/i*1.0;
38                 if(x > Maxaver && t[i+1]-t[i]>tty)
39                 {
40                     Mint = tty;
41                     Maxaver = x;
42                 }
43             }
44             printf("%.6lf %.6lf\n", Mint, Maxaver);
45         }
46     }
47     return 0;
48 }

 

posted @ 2014-03-09 09:37  水门  阅读(311)  评论(0编辑  收藏  举报