2~11TLE
复杂度 O(n⋅logtc),不知为何TLE
#include<bits/stdc++.h>
using namespace std;
long long a[101],b[101],c[101];
long long t,n,tc,tM;
long long j,ans=3e18,s;
long long l,r,mid;
long long check()
{
j=3e18;
for(int i=1;i<=n;i++)
{
if(c[i]-(tc-mid)*a[i]<b[i]) return 0;
j=min(j,(c[i]-(tc-mid)*a[i])/b[i]);
//求出tm减少的最小值
}
return j;
}
int main()
{
cin>>t;
while(t--)
{
cin>>n>>tc>>tM;
for(int i=1;i<=n;i++) scanf("%lld %lld %lld",&a[i],&b[i],&c[i]);
l=0;
r=tc-1;
while(l<=r)
{
//先二分tc减少的值,再求出tM减少的最小值
mid=l/2+r/2;
s=check();//减少常数
if(s)
{
r=mid-1;
if(mid+tM-s<ans)//花费的钱比答案少
{
if(tM<s) ans=mid;//防止答案为负数
else ans=mid+tM-s;
}
}
else l=mid+1;
}
printf("%lld\n",ans);
}
return 0;
}