/*这道题有点坑。。比赛时有两道这个为背景的买面包。搞混了。 (lazier Or lazy)。
这道题 买面包 。人睡觉时。。客人来了就走。不会叫醒人。。
贪心。如果第从i个人开始买不到面包 。那他后面的人是肯定买不到的。如果第i个人买到了。那么前面的人
一定会买到。。
这里有个坑爹的地方。。更新平均值时 在maxtime<t[i+1]-t[i]的时候更新。
*/
#include<iostream>
#include<cstdio>
#include<cstring>
#define N 1011
using namespace std;
int p[N],t[N],Maxtime;
double money,sum,w;
int main()
{
freopen("test.txt","r",stdin);
int T,n;
scanf("%d",&T);
while(T--)
{
Maxtime=0;
money=0;
sum=0;
w=0;
scanf("%d",&n);
for(int i=1;i<=n;i++)
{
scanf("%d",&p[i]);
}
for(int i=1;i<=n;i++)
{
scanf("%d",&t[i]);
}
for(int i=1;i<=n;i++)
{
sum+=p[i];
if(Maxtime<t[i]-t[i-1])
{
Maxtime=t[i]-t[i-1];
}
if(i==n)
{
if(money*i<sum)
{
money=sum/i;
w=Maxtime;
}
continue;
}
if(Maxtime<t[i+1]-t[i]&&money*i<sum)//这里注意。个人认为是减少sum/i的次数。精度不丢失.
{
money=sum/i;
w=Maxtime;
}
}
printf("%.6f %.6f\n",w,money);
}
}
zoj 3607 Lazier Salesgirl 贪心
最新推荐文章于 2018-04-27 08:48:37 发布