首页 > 代码库 > Codeforces Round #257 (Div. 2)

Codeforces Round #257 (Div. 2)

C这题说的是给了一个 矩形然后可以在矩形中切来切去 问最后那个最小块的最大面积 可以推出公式 (n/(x+1))*(m/(y+1)) x y 分别是横切个纵切的刀数, 可以通过解二元函数算出极值 ,须要取整比赛的时候就把这种方法给去掉了 悲 活该绿名

#include <iostream>#include <cstdio>#include <string.h>using namespace std;__int64 n,m,k;__int64 maxv(__int64 a, __int64 b){      return a>b?a:b;}__int64 minv(__int64 a,__int64 b){      return a>b?b:a;}int main(){       while(scanf("%I64d%I64d%I64d",&n,&m,&k)==3)       {            __int64 L = maxv(0,k-m+1);            __int64 R = minv(k,n-1);            if(k==0){                 printf("%I64d\n",n*m); continue;            }            if(k>n+m-2){                 printf("-1\n"); continue;            }            __int64 a = (n/(L+1))*(m/(k-L+1));            __int64 b = (n/(R+1))*(m/(k-R+1));            a =maxv(a,b);            printf("%I64d\n",a);       }       return 0;}复制代码
View Code

Codeforces Round #257 (Div. 2)