这个题,有一个步骤是需要统计a数组的所有元素之和,然后判断suma(a数组之和)是否<=p(这个不用管)
题目里说明了,ai 是一个整数,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;
}