题解 | #小咪买东西#
小咪买东西
https://ac.nowcoder.com/acm/problem/14662
emmm直接枚举x,二分查找最大化模板,即可。
#include <algorithm>
#include <string.h>
using namespace std;
typedef long long ll;
ll t,n,k,v[100000],c[100000],guihua[100000];
bool cmp(ll a,ll b)
{
return a>b;
}
bool judge(ll x)
{
ll sums=0;
for(int i=1;i<=n;i++)
{
guihua[i]=v[i]-x*c[i];
}
sort(guihua+1,guihua+1+n,cmp);
for(int i=1;i<=k;i++)
{
sums+=guihua[i];
}
if(sums>=0)
return true;
return false;
}
int main(void)
{
cin>>t;
while(t--)
{
cin>>n>>k;
for(int i=1;i<=n;i++)
{
scanf("%lld%lld",&c[i],&v[i]);
}
ll l=0,r=1e9;
while(l+1<r)
{
ll mid=(r-l)/2+l;
if(judge(mid))l=mid;
else
{
r=mid;
}
}
cout<<l<<endl;
}
return 0;
}