您的位置:首页 > 其它

codeforces C. Jzzhu and Chocolate

2015-03-14 16:37 337 查看
http://codeforces.com/contest/450/problem/C

题意:一个n×m的矩形,然后可以通过横着切竖着切,求切完k次之后最小矩形面积的最大值。

思路:设k1为横着切的次数,k2为竖着切的次数,最后的面积的大小为s=n/(k1+1)*(m/(k2+1)); 只有(k1+1)*(k2+1)的最小时,s最大.

#include <cstdio>
#include <iostream>
#include <cstring>
#include <algorithm>
#define ll long long
using namespace std;

ll n,m,k;

int main()
{
cin>>n>>m>>k;
ll ans=0;
if(k>(n-1+m-1))
{
printf("-1\n");
return 0;
}
else
{
if(n-1>=k)
{
ans=max(ans,m*(n/(k+1)));
}
else
{
ans=max(ans,m/(k-(n-1)+1));
}
if(m-1>=k)
{
ans=max(ans,n*(m/(k+1)));
}
else
{
ans=max(ans,n/(k-m+2));
}
}
cout<<ans<<endl;
return 0;
}


View Code
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: