ZOJ 3607 Lazier Salesgirl (贪心)

Lazier Salesgirl


Time Limit: 2 Seconds      Memory Limit: 65536 KB



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 nintegers 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


Author: WU, Zejun
Contest: The 9th Zhejiang Provincial Collegiate Programming Contest

题意:

T个情况,每个情况有n个客人,第i个客人可赚p[i]元钱,第i个客人t[i]时间来,卖东西的女孩很懒,如果w时间内没人来就睡觉,后面来的客人就会刚来就走,求赚钱的平均值最大同时输出最小w.

这题采用贪心,如果t[i+1]-t[i]<maxtime时,那么后面一个客人能买到面包,如果t[i+1]-t[i]>maxtime那么就先把当前的情况记录下来,再往后去找

 1 #include<cstdio>
 2 #include<cstring>
 3 #include<stdlib.h>
 4 #include<algorithm>
 5 using namespace std;
 6 const int MAXN=1000+10;
 7 int p[MAXN],t[MAXN];
 8 int main()
 9 {
10     //freopen("in.txt","r",stdin);
11     int kase;
12     scanf("%d",&kase);
13     while(kase--)
14     {
15         int n;
16         scanf("%d",&n);
17         memset(p,0,sizeof(p));
18         memset(t,0,sizeof(t));
19         for(int i=1;i<=n;i++)
20             scanf("%d",&p[i]);
21         for(int i=1;i<=n;i++)
22             scanf("%d",&t[i]);
23
24         double maxtime=-1,time=0;
25         double sum=0,av=0;
26         for(int i=1;i<=n;i++)
27         {
28             sum+=p[i];
29             if(maxtime<t[i]-t[i-1])
30                 maxtime=t[i]-t[i-1];
31
32             if(maxtime<t[i+1]-t[i]&&sum>av*i)
33             {
34                 av=sum/i;
35                 time=maxtime;
36             }
37
38             if(i==n)
39             {
40                 if(av*i<sum)
41                 {
42                     av=sum/i;
43                     time=maxtime;
44                 }
45             }
46         }
47         printf("%.6lf %.6lf\n",time,av);
48     }
49     return 0;
50 }

ZOJ 3607 Lazier Salesgirl (贪心),布布扣,bubuko.com

时间: 2024-10-12 03:26:38

ZOJ 3607 Lazier Salesgirl (贪心)的相关文章

zoj 3607 Lazier Salesgirl 暴力 前缀和

Lazier Salesgirl Time Limit: 2 Seconds      Memory Limit: 65536 KB 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

ZOJ 3607 Lazier Salesgirl(贪心啊 )

题目链接:http://acm.zju.edu.cn/onlinejudge/showProblem.do?problemId=4710 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 laz

[ZOJ 3607] Lazier Salesgirl

题目链接:http://acm.zju.edu.cn/onlinejudge/showProblem.do?problemCode=3607 思路:最小的相隔时间肯定是两个时间的间隔,只需要计算每个时间间隔所获的价值的平均值,取最大的平均值以及其对应的时间间隔即可,注意,当平均值相等的时候,取时间间隔小的. AC 代码: #include <cstdio> #include <vector> #include <iostream> using namespace std

zjuoj 3607 Lazier Salesgirl

http://acm.zju.edu.cn/onlinejudge/showProblem.do?problemCode=3607 Lazier Salesgirl Time Limit: 2 Seconds      Memory Limit: 65536 KB Kochiya Sanae is a lazy girl who makes and sells bread. She is an expert at bread making and selling. She can sell th

H - Lazier Salesgirl

Time Limit:2000MS     Memory Limit:65536KB     64bit IO Format:%lld & %llu Submit Status Practice ZOJ 3607 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 custome

zoj 3778 Talented Chef 贪心

zoj 3778 Talented Chef 题意: 有n个饼,给出完成每个饼所需要的时间t1,t2,...,tn,现在有m个锅(也就是说可以同时煎m个饼),问完成所有饼至少需要多少时间. 限制: 1 <= n,m,ti <= 40000 思路: 贪心 ans=max(ceil(sigma(1~n,ti)/m),max(ti)) /*zoj 3778 Talented Chef 题意: 有n个饼,给出完成每个饼所需要的时间t1,t2,...,tn,现在有m个锅(也就是说可以同时煎m个饼),问完

ZOJ 3946 Highway Project 贪心+最短路

题目链接: http://www.icpc.moe/onlinejudge/showProblem.do?problemCode=3946 题解: 用dijkstra跑单元最短路径,如果对于顶点v,存在一系列边(ui,v)使得dis[v]最小(dis[v]表示0到v的距离).这些边能且只能选一条,那么我们自然应该选cost最小的那个边了. 1 #include<iostream> 2 #include<cstdio> 3 #include<cstring> 4 #inc

ZOJ 2702 Unrhymable Rhymes 贪心

贪心,能凑成一组就算一组 Unrhymable Rhymes Time Limit: 10 Seconds      Memory Limit: 32768 KB      Special Judge An amateur poet Willy is going to write his first abstract poem. Since abstract art does not give much care to the meaning of the poem, Willy is plan

ZOJ 3689 Digging(贪心+dp)

Digging Time Limit: 2 Seconds      Memory Limit: 65536 KB When it comes to the Maya Civilization, we can quickly remind of a term called the end of the world. It's not difficult to understand why we choose to believe the prophecy (or we just assume i