比赛 |
EYOI与SBOI开学欢乐赛14th |
评测结果 |
AAAAAAAAAA |
题目名称 |
ZQC 的拼图 |
最终得分 |
100 |
用户昵称 |
op_组撒头屯 |
运行时间 |
0.186 s |
代码语言 |
C++ |
内存使用 |
5.20 MiB |
提交时间 |
2022-10-24 20:54:48 |
显示代码纯文本
#include <bits/stdc++.h>
using namespace std;
const int N=100+5;
const int inf=0x7fffffff;
int n,m;
int a[N],b[N],mx=inf;
int f[N][N];
bool check(int k){
memset(f,0,sizeof(f));
int mxy=0;
for (int i=1,tmp=0;i<=n;i++){
for (int j=0;j<=mxy;j++){
for (int p=j;p<=min(m,j+k/a[i]);p++){
f[i][p]=max(f[i][p],(a[i]*j+k-a[i]*p)/b[i]+f[i-1][j]);
tmp=max(tmp,p);
}
}
mxy=tmp;
}
return f[n][m]>=m;
}
int main(){
freopen ("jigsaw.in","r",stdin);
freopen ("jigsaw.out","w",stdout);
scanf("%d%d",&n,&m);
for (int i=1;i<=n;i++){
scanf("%d%d",&a[i],&b[i]);
mx=min(mx,(a[i]+b[i])*m+1);
}
int l=1,r=mx;
while(l<r){
int mid=(l+r)/2;
if (check(mid))r=mid;
else l=mid+1;
}
printf("%d\n",l);
return 0;
}