刚刚E题求hack
  • 板块学术版
  • 楼主ShanQing
  • 当前回复3
  • 已保存回复3
  • 发布时间2024/10/5 21:44
  • 上次更新2024/10/5 22:25:55
查看原帖
刚刚E题求hack
368204
ShanQing楼主2024/10/5 21:44

WA on test_52.txt,仅WA一个,赛时连吃6发破防了。

#include <bits/stdc++.h>
//#include <windows.h>
#define ED cerr<<endl;
#define TS cerr<<"I AK IOI"<<endl;
#define cr(x) cerr<<x<<endl;
#define cr2(x,y) cerr<<x<<" "<<y<<endl;
#define cr3(x,y,z) cerr<<x<<" "<<y<<" "<<z<<endl;
#define cr4(x,y,z,w) cerr<<x<<" "<<y<<" "<<z<<" "<<w<<endl;
#define pii pair<int,int>
#define epb emplace_back
#define pb push_back
#define mk make_pair
#define fi first
#define se second
#define int long long
//#define ull unsigned long long
using namespace std;
const int N=105,INF=2e9,mod=1e9+7;
int n,x;
struct node {
	int a,p,b,q;
}a[N];

bool check(int mid) {
	int sum=0;
	for(int i=1;i<=n;++i) {
		int qwq=2e16,cnt=(mid-1)/a[i].a+1;
		for(int j=0;j<=12000;++j) {
			int cnt2=(mid-(cnt-j)*a[i].a-1)/a[i].b+1;
			if(mid-(cnt-j)*a[i].a<=0) cnt2=0;
			qwq=min(qwq,(cnt-j)*a[i].p+cnt2*a[i].q);
		}
		sum+=qwq;
		//cr4(mid,cnt,sum,qwq)
	}
	return sum<=x;
}

signed main()
{
	scanf("%lld%lld",&n,&x);
	for(int i=1;i<=n;++i) {
		scanf("%lld%lld%lld%lld",&a[i].a,&a[i].p,&a[i].b,&a[i].q);
		if(a[i].p*a[i].b>a[i].q*a[i].a) {
			swap(a[i].p,a[i].q);
			swap(a[i].a,a[i].b);
		}
	}
	int l=1,r=1e11,ans=0;
	while(l<=r) {
		int mid=l+r>>1;
		if(check(mid)) l=mid+1,ans=mid;
		else r=mid-1;
	}
	printf("%lld\n",ans);
	return 0;
}

2024/10/5 21:44
加载中...