WA得特别离谱——全错!!!
查看原帖
WA得特别离谱——全错!!!
401665
54fwk楼主2021/4/24 22:26

1.思路应该是正确的:

先把魔法给从小到大排序,

再用一次性登顶的年数与询问的年数求差,

最后用这个差减去每个魔法除以速度的值。

2.代码肯定是错误的:

#include <iostream>
#include <algorithm>
using namespace std;
double a[200001],b[200001];
double q,t; 
int cmp(double x,double y)
{
	return x>y;
}
int main()
{
	int n,l,v;
	cin>>n>>l>>v;
	for(int i=1;i<=n;i++)
	{
		cin>>a[i];
	}
	sort(a+1,a+n+1,cmp);
	b[0]=l/v;
	for(int i=1;i<=n;i++){
		b[i]=a[i]*1.0/v+b[i-1];
	}
	cin>>q;
	while(q--)
	{
		cin>>t;
		if(b[n]<=t)
		{
			cout<<-1<<endl;
			continue;
		}
		int l=0,r=n,ans=0;
		while(l<=r)
		{
			int mid=(l+r)>>1;
			if(b[mid]>t)
			{
				ans=mid;
				r=mid-1;
			}
			else
			{
				l=mid+1;
			}
		}
		cout<<ans<<endl;
	}
	return 0;
}

3.题解在哪儿打呀,求助!!!

2021/4/24 22:26
加载中...