解析:
二分答案,右区间去的尽可能大,但也要注意不要log(r)不要超时
这里二分的式子肯定是Ek对(v,w),使得Σv/Σw>=x,-->Σv-x*Σw>=0
因为这个式子具有可加性
v1-x*w1
v2-x*w2
v3-x*w3 ......->Σv-x*Σw
那么我们就可以算出每一对(v,w)的v-x*w的值c,取c最大的k对求和,看值是不是>=0
#include <cstdio>
#include <cstring>
#include <algorithm>
#include <cstdlib>
#include <cmath>
using namespace std;
#define INF 1e9;
typedef long long int lli;
const int MAXN = 1e5+10;
lli a[MAXN];
lli b[MAXN];
double sum[MAXN];
int n,k;
bool check(double x)
{
for(int i=1;i<=n;i++)
{
sum[i]=b[i]-x*a[i];
}
sort(sum+1,sum+1+n);
double ans=0;
fo