首页 > 其他 > 详细

ACM - Lazier Salesgirl [暴力 懒销售睡觉]

时间:2014-03-16 18:18:24      阅读:574      评论:0      收藏:0      [点我收藏+]

 

Description

Kochiya Sanae is a lazy girl who makes and sells bread. She is an expert at bread making and selling. She can sell the i-th customer a piece of bread for price pi. But she is so lazy that she will fall asleep if no customer comes to buy bread for more than w minutes. When she is sleeping, the customer coming to buy bread will leave immediately. It‘s known that she starts to sell bread now and the i-th customer come after ti minutes. What is the minimum possible value of w that maximizes the average value of the bread sold?

Input

There are multiple test cases. The first line of input is an integer T ≈ 200 indicating the number of test cases.

The first line of each test case contains an integer 1 ≤ n ≤ 1000 indicating the number of customers. The second line contains n integers 1 ≤ pi ≤ 10000. The third line contains n integers 1 ≤ ti ≤ 100000. The customers are given in the non-decreasing order of ti.

Output

For each test cases, output w and the corresponding average value of sold bread, with six decimal digits.

Sample Input

2
4
1 2 3 4
1 3 6 10
4
4 3 2 1
1 3 6 10

Sample Output

4.000000 2.500000
1.000000 4.000000


题目大意:T种情况,每种n个客人,第i个客人可赚p[i]元钱,第i个客人t[i]时间来,卖东西的很懒,如果w时间内没人来就睡觉,一觉不起,求最大人均赚的钱同时输出最小w.
解题思路:暴力枚举每次在第i个顾客来后睡。用w[i]保存想赚第i个人w的最小值,用av[i]保存赚前i个顾客的平均值。如果在第i个顾客来后睡觉就要满足w[i]<w[i+1](这个式子表明第i和第i+1个顾客之间的时间间隔比之前的都大,所以可以取w=w[i]来在这点后睡觉不醒)

bubuko.com,布布扣
 1 #include<iostream>
 2 #include<string.h>
 3 #include<cstring>
 4 #include<cstdio>
 5 #include<string>
 6 using namespace std;
 7 int main(){
 8     int T;cin>>T;
 9     while(T--){
10         int n;cin>>n;
11         int p[1002],t[1002];
12         //w[i]表示赚第i个人需要w的最小值;av[i]表示前i个的人均赚钱数
13         double w[1002],av[1002];
14         double sum=0;
15         for(int i=0;i<n;i++){
16             cin>>p[i];
17             sum+=p[i];
18             av[i]=sum/(i+1);
19         }
20         double max_w=-1;
21         for(int i=0;i<n;i++){
22             cin>>t[i];
23             if(i!=0){
24                 if(t[i]-t[i-1]>max_w){
25                     max_w=t[i]-t[i-1];
26                     w[i]=max_w;
27                 }else w[i]=max_w;
28             }
29             else {
30                 max_w=t[0];
31                 w[i]=max_w;
32             }
33         }w[n]=1312312313;//w[n]赋值很高
34         
35         int pos=0;double max_av=-1;//暴力枚举在i点睡着
36         for(int i=0;i<=n;i++){
37             if(w[i]<w[i+1]){
38                 if(av[i]>max_av){
39                     max_av=av[i];
40                     pos=i;
41                 }
42             }
43         }
44 
45         printf("%.6lf %.6lf\n",w[pos],av[pos]);
46     }return 0;
47 }
bubuko.com,布布扣

 

ACM - Lazier Salesgirl [暴力 懒销售睡觉],布布扣,bubuko.com

ACM - Lazier Salesgirl [暴力 懒销售睡觉]

原文:http://www.cnblogs.com/zjutlitao/p/3603472.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!