CodeForces 449AJzzhu and Chocolate(贪心)

CodeForces 449AJzzhu and Chocolate(贪心)

CodeForces 449A

题目大意: 
一块N*M的巧克力,指定K次切割,切割的要求看题目。问能否使得最小的那块巧克力的面积最大。如果不能进行K次切割输出-1.

解题思路: 
要使得切割后最小的巧克力的面积最大,那么尽量是朝一个方向切割是最优的。

代码:

#include <cstdio>

typedef long long ll;

ll N, M, K;
ll max (ll a, ll b) {
    return a > b ? a: b;
}

ll min(ll a, ll b) {
    return a < b ? a: b;
}

ll handle(ll x, ll y) {
    ll a = N/(x + 1);
    a = min(a, N - a*x);
    ll b = M/(y + 1);
    b = min(b, M - b*y);
    return a * b;
}

ll solve () {
    ll x = max(K - N + 1, 0);
    ll y = max(K - M + 1, 0);
    return max(handle(K - x, x), handle(y, K - y));
}

int main () {

    while (scanf ("%lld%lld%lld", &N, &M, &K) != EOF) {

        if (K > (N + M) - 2) {
            printf ("-1\n");
            continue;
        }

/*      if (N > M) {
            ll t = N;
            N = M;
            M = t;
        }
        if (K + 1 <= M) {

            if (N % (K + 1) == 0) 
                printf ("%lld\n", N /(K + 1) * M);
            else if (M % (K + 1) == 0) 
                printf ("%lld\n", M /(K + 1) * N);
            else 
                printf ("%lld\n", solve());
        } else 
            printf ("%lld\n", max(min(N/(K - M + 2), N - (N/(K - M + 2))*(K - M + 1)), min(M/(K - N + 2), M - (M/(K - N + 2) * (K - N + 1)))));*/
        printf ("%lld\n", solve());
    }
}
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值