题解:二分查找可以制作多少个蛋糕,假如可以制作,那么每一种材料都必须充足。
#include<stdio.h> const int maxn= 2 * 1e9 + 2; __int64 n, t, a[100100], b[100100]; __int64 f(__int64 z,__int64 y) { __int64 mid, sum; int i; while(z<=y) { mid=(z+y)/2; for(sum=0,i=1;i<=n;i++) { if(b[i]<a[i]*mid) sum += (a[i]*mid-b[i]); if(sum>t) break; } if(sum==t) return mid; else if(sum<t) z=mid+1; else y=mid-1; } return z-1; } int main() { int i, j; scanf("%d%d", &n, &t); for(i=1;i<=n;i++) scanf("%d", &a[i]); for(j=1;j<=n;j++) scanf("%d", &b[j]); printf("%I64d ", f(0, maxn)); return 0; }