比赛 4043级2023省选模拟赛6 评测结果 AAAAAAAAAAA
题目名称 Bakery 最终得分 100
用户昵称 ムラサメ 运行时间 0.011 s
代码语言 C++ 内存使用 1.61 MiB
提交时间 2023-03-28 11:38:14
显示代码纯文本
#include<bits/stdc++.h>
using namespace std;
long long T;
long long n,tc,ttm;
struct Node{
	long long a,b,c;
}w[110];
long long c[110];
bool check(long long x){
	long long Max=0,Min=0x3f3f3f3f;
	for(long long i=1;i<=n;i++){
		long long m=w[i].c-x*w[i].b;
		if(c[i]>0){
			Min=min((m/c[i]),Min);
		}
		else{
			if(c[i]==0){
				if(m<0){
					return false;
				}
			}
			else{
				if(c[i]<0){
					long long q=0;
					if(m%c[i]){
						q=1;
					}
					Max=max(m/c[i]+q,Max);
				}
			}
		}
	}
	if(Max>Min||Max>=x||Max>tc||Min<1||Min<x-ttm){
		return false;
	}
	return true;
}
signed main(){
	freopen("bakery.in","r",stdin);
	freopen("bakery.out","w",stdout);
	ios::sync_with_stdio(0);
	cin.tie(0);
	cout.tie(0);
	cin>>T;
	while(T--){
		cin>>n>>tc>>ttm;
		for(long long i=1;i<=n;i++){
			long long x,y,z;
			cin>>x>>y>>z;
			w[i].a=x;
			w[i].b=y;
			w[i].c=z;
			c[i]=x-y;
		}
		long long l=2,r=ttm+tc;
		while(l<=r){
			long long mid=l+r>>1;
			if(check(mid)){
				l=mid+1;
			}
			else{
				r=mid-1;
			}
		}
        long long ans=ttm+tc-r;
		cout<<ans<<endl;
	}
	return 0;
}