数学不好千万别来ACM啊!
这道题的大意是这样的,某人要去寄快递,但是所有窗口都有人在服务,但是没人排队,已知员工的效率(单位时间的工作量占总工作量的值)为指数分布,求解这个人要寄出快递需要多久。
感觉好坑,读了半天题意都没懂……
开始分析:
已知寄出快递的总时间分为等待时间和处理时间。
等待时间:
由于每个员工都是独立的,而指数分布(y=λe^-λx)的期望是λ,λ表示每位员工的效率在题目中用ki来表示,所以等待时间的期望值应该是1/(Σki)。
处理时间:
对于每位员工,完成一次订单的时间都是1/ki,而选择每位员工的概率都为 ki /(∑ki),那么。期望的服务时间就可以表示为:∑(ki / (∑ki) * 1 / ki) = N / (∑ki)
将两个时间做和,就是总需要的时间了。
即N+1/ (∑ki)。已知如上推论,可以将代码写出来了。但是需要注意的是,这道题输入的已使用时间c是没有用的,所以对数学不好的人来说,真的好坑( ̄o ̄) 。
#include <cstdio>
#include <algorithm>
#include <cstring>
using namespace std;
int N,T;
double sum,k;
int c;
int main(void)
{
int cas = 1;
scanf("%d", &T);
while(T--){
scanf("%d", &N);
sum = 0.0;
for(int i = 0; i < N; ++i){
scanf("%lf",&k);
sum += k;
}
for(int i = 0; i < N; ++i)
scanf("%d", &c);
printf("Case #%d: %.6f\n",cas++,(N + 1.0) / sum);
}
return 0;
}
网友评论