记录编号 543884 评测结果 AAAAAAAAAAA
题目名称 [NOIP 2010冲刺六]软件开发 最终得分 100
用户昵称 GravatarLGLJ 是否通过 通过
代码语言 C++ 运行时间 0.036 s
提交时间 2019-10-11 08:05:06 内存使用 1.18 MiB
显示代码纯文本
#include <iostream>
#include <cstring>
#include <cstdio>
#include <vector>
#include <ctime>
#include <stack>
#include <queue>
#include <queue>
#include <cmath>
#include <bitset>
#include <deque>
#include <algorithm>
#include <cctype>
#define I inline
#define R register
#define LL long long
#define INF (0x7f7f7f7f)
#define lowbit(x) (x&(-x))
using namespace std;
int n,m,ans=0;
int num[150][2]={0};
int f[150][150]={0};
I int read()
{
	int x=0;
	char ch=0;
	bool w=true;
	while(!isdigit(ch)){if(ch=='-')w=false;ch=getchar();}
	while(isdigit(ch)){x=(x<<3)+(x<<1)+(ch^48);ch=getchar();}
	return w?x:-x;
}
I bool check(int x)
{
	memset(f,-1,sizeof(f));
	f[0][0]=0;
	for(R int i=1;i<=n;++i)
		for(R int j=0;j<=m;++j)
		{
			f[i][j]=f[i-1][j];
			for(R int k=0;k<=j;++k)
			{
				if((j-k)*num[i][0]>x || f[i-1][k]==-1)
					continue;
				f[i][j]=max(f[i][j],f[i-1][k]+(x-(j-k)*num[i][0])/num[i][1]);
			}
		}
	return f[n][m]>=m;
}
I int MAIN()
{
	freopen ("time.in","r",stdin);
	freopen ("time.out","w",stdout);
	int le=1,ri=0;
	n=read(),m=read();
	for(R int i=1;i<=n;++i)
		for(R int j=0;j<=1;++j)
		{
			num[i][j]=read();
			ri=max(ri,num[i][j]);
		}
	ri*=2*m;
	while(le<ri)
	{
		int mid=(le+ri)>>1;
		if(check(mid))
			ri=mid;
		else
			le=mid+1;
	}
	cout<<le;
	return 0;
}
int lglj=MAIN();
int main(){;}