您的位置:首页 > 其它

ZOJ-3607

2014-08-25 12:01 155 查看
其实是一道水题,枚举一下就OK了,注意售货员睡着以后就不会醒来了,所以后面的东西都卖不了了

#include<cstdio>
#include<set>
#include<vector>

using namespace std;

int main()
{
int T, n, p, t;
scanf("%d", &T);
vector<int> V1, V2;
set<int> S;
while (T--)
{
scanf("%d", &n);
V1.clear();
V2.clear();
S.clear();
for (int i = 0; i < n; i++)
{
scanf("%d", &p);
V1.push_back(p);
}
int prev = 0;
for (int i = 0; i < n; i++)
{
scanf("%d", &t);
V2.push_back(t);
S.insert(t - prev);
prev = t;
}

double ww, res = 0;
for (set<int>::iterator it = S.begin(); it != S.end(); it++)
{
int w = *it, sum = 0, total = 0;
prev = 0;
for (size_t i = 0; i < V2.size(); i++)
if (V2[i] - prev <= w)
{
sum += V1[i];
total++;
prev = V2[i];
}
else
break;
double aver = total ? sum * 1.0 / total : 0;
if (aver > res)
{
res = aver;
ww = w;
}
}
printf("%.6lf %.6lf\n", ww, res);
}
return 0;
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: