E求条
  • 板块学术版
  • 楼主xu_zhihao
  • 当前回复8
  • 已保存回复8
  • 发布时间2024/10/5 21:46
  • 上次更新2024/10/6 08:32:15
查看原帖
E求条
1063855
xu_zhihao楼主2024/10/5 21:46
#include<bits/stdc++.h>
using namespace std;
const int N=110;
long long a[N],p[N],b[N],q[N];
int n,x;
bool check(int mid){
	long long sum=0;
	for(int i=1;i<=n;i++){
		long long pp=ceil(1.0*mid/a[i])*p[i];
		long long qq=ceil(1.0*mid/b[i])*q[i];
		long long fx=floor(1.0*mid/a[i])*p[i]+ceil(1.0*(mid-floor(1.0*mid/a[i])*a[i])/b[i])*q[i];
		long long fy=floor(1.0*mid/b[i])*q[i]+ceil(1.0*(mid-floor(1.0*mid/b[i])*b[i])/a[i])*p[i];
		//cout<<pp<<" "<<qq<<endl;
		sum+=min(pp,min(qq,min(fx,fy)));
	}
	//cout<<sum<<endl;
	return sum<=x;
}
int main(){
	cin>>n>>x;
	for(int i=1;i<=n;i++){
		cin>>a[i]>>p[i]>>b[i]>>q[i];
	}
	int l=0,r=1e7,best=-1;
	while(l<=r){
		int mid=(l+r)/2;
		if(check(mid)){
			l=mid+1;
			best=mid;
		}
		else{
			r=mid-1;
		}
		//cout<<endl;
	}
	cout<<best;
}
2024/10/5 21:46
加载中...