美图Cpp服务端,第二题蚂蚁爬杆问题求解!

首先上题目:

#include<stdlib.h>
#include <stdio.h>
#include <vector>
#include <iostream>
using namespace std;
int GetMaxTime(double length,double speed,vector<double>ans_pos)
{
	int *distance = new int[ans_pos.size()];
	int maxLenth = 0;
	for (int i = 0; i < ans_pos.size(); i++)
	{
		//杆两端中最远的距离为蚂蚁爬行的最大距离
		if (ans_pos[i] <= length / 2)
		{
			distance[i] = length - ans_pos[i];
		}
		else
		{
			distance[i] = ans_pos[i];
		}
		if (maxLenth < distance[i])
		{
			maxLenth = distance[i];
		}
	}
	return maxLenth / speed;
}
int GetMinTime(double length,double speed,vector<double>ans_pos)
{

	int* distance = new int[ans_pos.size()];
	int minLenth = ans_pos[0];
	for (int i = 0; i < ans_pos.size(); i++)
	{
		//杆两端中最近的距离为蚂蚁爬行的最小距离
		if (ans_pos[i] <= length / 2)
		{
			distance[i] =  ans_pos[i];
		}
		else
		{
			distance[i] =length- ans_pos[i];
		}
		if (minLenth > distance[i])
		{
			minLenth = distance[i];
		}
	}
	return minLenth / speed;
}
int main()
{
	int n;
	double length,v;
	double pos;
	vector<double>ans_pos;
	cin>>n>>v>>length;
	for(int i=0;i<n;i++)
	{
		cin>>pos;
		ans_pos.push_back(pos);
	}
	cout<<GetMinTime(length,v,ans_pos)<<" "<<GetMaxTime(length,v,ans_pos)<<endl;;

}
求解到底哪里错了 就A了25!!!!
全部评论
时间是double类型,那样你就可以通过50%了
点赞 回复 分享
发布于 2017-09-04 21:26
跟去年百度的题类似,爬行的蚂蚁
点赞 回复 分享
发布于 2017-09-04 21:40
蚂蚁可能不在杆上
点赞 回复 分享
发布于 2017-09-04 21:43
除了蚂蚁个数,其他用double
点赞 回复 分享
发布于 2017-09-04 21:46
最短怎么能是4s,4s只能爬出最左端一只 ,最短时间用所有蚂蚁中距两端距离较短的最大值来求,最长时间用所有 蚂蚁中距两端距离较***的最大值,比如【2,10】,最短距离在【2,10】中取10,最长距离在【18,10】中取18,然后除以速度求出所有蚂蚁爬出的上界和下界
点赞 回复 分享
发布于 2017-09-04 21:57
老哥 好像是小学奥数题吧 是不是就相当于离端点最远的那个蚂蚁一直爬出去。
点赞 回复 分享
发布于 2017-09-04 22:06
这题倒是AC了,不过我觉得这题答案是有问题的,题目问的是所有蚂蚁全出来的最短时间,但是答案是第一个蚂蚁出来的最短时间。最后按他的方法写倒是AC了。话说楼主第一题怎么写的?我知道是用贪心算法,但是不会写....
点赞 回复 分享
发布于 2017-09-04 22:06
除了蚂蚁数量之外全用double
点赞 回复 分享
发布于 2017-09-04 22:07
我竟然理解成所以的蚂蚁可以来回碰撞的。。。。。
点赞 回复 分享
发布于 2017-09-04 22:11

相关推荐

评论
点赞
收藏
分享
牛客网
牛客企业服务