1 条题解
-
0
C++ :
#include<iostream> #include<cstdio> #include<cmath> #include<cstring> #include<algorithm> using namespace std; long long int n,m; long long int c[105][105],a[105],b[105]; bool f(long long int k) { long long int maxy=-1; memset(c,-1,sizeof(c)); c[0][0]=0; for(long long int i=1;i<=n;i++) for(long long int j=0;j<=m;j++) { maxy=-1; for(long long int l=max((long long)0,j-k/a[i]);l<=j;l++) { if(c[i-1][l]==-1) continue; maxy=max(c[i-1][l]+(k-(j-l)*a[i])/b[i],maxy); } c[i][j]=maxy; } if(c[n][m]>=m) return 1; return 0; } int main() { long long int l,r,mid,i; scanf("%lld%lld",&n,&m); c[0][0]=0; for(i=1;i<=n;i++)scanf("%lld%lld",&a[i],&b[i]); r=1000000000; l=1; while(l<=r) { mid=(l+r)/2; if(f(mid)) r=mid-1; else l=mid+1; } printf("%lld\n",l); return 0; }
- 1
信息
- ID
- 991
- 时间
- 1000ms
- 内存
- 512MiB
- 难度
- (无)
- 标签
- 递交数
- 0
- 已通过
- 0
- 上传者