玄学的地方
查看原帖
玄学的地方
199459
Masna_Kimoyo楼主2021/8/2 16:49

这个题,有一个步骤是需要统计a数组的所有元素之和,然后判断suma(a数组之和)是否<=p(这个不用管)

题目里说明了,aia_i 是一个整数,p也是一个整数,也就是说,suma也会是一个整数

整数和整数作对比,似乎没有任何问题

然后WA了两个样例点,问题就出在这个特判上

后来试了一下,我把suma的类型改成double后,AC了

可是suma不是显然是int类型的吗,,,

有没有大佬能够帮帮我/dk

这是我的代码:

#include<bits/stdc++.h>
using namespace std;
const double eps=1e-4;
const int N=1e6+5;
double l=0,r=1e10,suma;
int n,q;
int a[N],b[N];
inline int read()
{
	int x=0;
	bool w=0;
	char c=getchar();
	while(!isdigit(c))
		w|=c=='-',c=getchar();
	while(isdigit(c))
		x=(x<<1)+(x<<3)+(c^48),c=getchar();
	return w?-x:x;
}
inline bool check(double x)
{
	double use=x*q;
	for(register int i=1;i<=n;++i)
	{
		double t=a[i]*x;
		if(t<=b[i])	continue;
		else	use-=(t-b[i]);	
	}
	return use>=0;
}
int main()
{
	n=read(),q=read();
	for(register int i=1;i<=n;++i)
	{
		a[i]=read(),b[i]=read();
		suma+=a[i];
	}
	if(suma<=q)
	{
		printf("-1");
		return 0;
	}
	while(r-l>eps)
	{
		double mid=(l+r)/2;
		if(check(mid))	l=mid;
		else	r=mid;
	}
	printf("%.4lf",l);
	return 0;
}
2021/8/2 16:49
加载中...