枚举每段距离!
#include <iostream>
#include <stdio.h>
#include <string.h>
#include <math.h>
#include <stdlib.h>
#include <algorithm>
#include <vector>
#include <limits.h>
#include <queue>
#include <stack>
using namespace std;
int main()
{
int p[1010],t[1010],n,i,j,ti,q,k,dis[1010];
double sum,ave;
cin>>ti;
while(ti --)
{
cin>>n;
for(i = 1;i <= n;i ++)
cin>>p[i];
t[0] = 0;
for(i = 1;i <= n;i ++)
{
cin>>t[i];
dis[i] = t[i] - t[i-1];
}
double maxdis = 0,maxave = 0;
for(i = 1;i <= n;i ++)
{
double sum = 0;
int num = 0;
for(j = 1;j <= n;j ++)
{
if(dis[j] > dis[i]) break;
sum += p[j];
num ++;
}
if(sum/(double)num > maxave) {maxave = sum/(double)num;maxdis = dis[i];}
}
printf("%.6lf %.6lf\n",maxdis,maxave);
}
}
本文介绍了一种通过枚举每段距离来寻找最优路径的算法实现。该算法首先读取测试用例数量和每个测试用例中的站点数,然后输入各站点的利润和相邻站点间的距离。接着,通过两层循环遍历所有可能的距离段,计算并找出具有最大平均利润的最短距离及其对应的平均利润。最后,输出这段最优距离和平均利润。
246

被折叠的 条评论
为什么被折叠?



