| 比赛 | 
    EYOI与SBOI开学欢乐赛14th | 
    评测结果 | 
    AAAAAAAAAA | 
    | 题目名称 | 
    ZQC 的拼图 | 
    最终得分 | 
    100 | 
    | 用户昵称 | 
    ZRQ | 
    运行时间 | 
    1.017 s  | 
    | 代码语言 | 
    C++ | 
    内存使用 | 
    5.24 MiB  | 
    | 提交时间 | 
    2022-10-24 21:34:20 | 
显示代码纯文本
#include<bits/stdc++.h>
#define ll long long
using namespace std;
const int N=105;
ll ans,n,m,a[N],b[N],f[N][N];
bool check(ll mid)
{
	memset(f,0,sizeof(f));
	ll x=0,y;
	for(int i=1;i<=n;++i)
	{
		for(int j=0;j<=x;++j)
			for(int k=j;k<=min(m,j+mid/a[i]);++k)
				f[i][k]=max(f[i][k],f[i-1][j]+(mid+(j-k)*a[i])/b[i]),y=k;
		x=y;
	}
	return f[n][m]>=m;
}
int main()
{
	freopen("jigsaw.in","r",stdin);
	freopen("jigsaw.out","w",stdout);
	scanf("%lld%lld",&n,&m);
	for(int i=1;i<=n;++i) scanf("%lld%lldd",&a[i],&b[i]);
	ll l=1,r=1e8,mid;
	while(l<=r)
	{
		mid=(l+r)>>1;
		if(check(mid)) r=mid-1,ans=mid;
		else l=mid+1; 
	}
	printf("%lld\n",ans);
	return 0;
}