Codeforces Round #257 (Div. 1)449A – Jzzhu and Chocolate(贪婪、数学)

Codeforces Round #257 (Div. 1)449A – Jzzhu and Chocolate(贪婪、数学)

大家好,又见面了,我是全栈君,今天给大家准备了Idea注册码。

主题链接:http://codeforces.com/problemset/problem/449/A

----------------------------------------------------------------------------------------------------------------------------------------------------------
欢迎光临天资小屋害羞害羞害羞害羞http://user.qzone.qq.com/593830943/main

----------------------------------------------------------------------------------------------------------------------------------------------------------

A. Jzzhu and Chocolate
time limit per test

1 second

memory limit per test

256 megabytes

input

standard input

output

standard output

Jzzhu has a big rectangular chocolate bar that consists of n × m unit squares. He wants to cut this bar exactly k times. Each cut must meet the following requirements:

  • each cut should be straight (horizontal or vertical);
  • each cut should go along edges of unit squares (it is prohibited to divide any unit chocolate square with cut);
  • each cut should go inside the whole chocolate bar, and all cuts must be distinct.

The picture below shows a possible way to cut a 5 × 6 chocolate for 5 times.


Codeforces Round #257 (Div. 1)449A - Jzzhu and Chocolate(贪婪、数学)

Imagine Jzzhu have made k cuts and the big chocolate is splitted into several pieces. Consider the smallest (by area) piece of the chocolate, Jzzhu wants this piece to be as large as possible. What is the maximum possible area of smallest piece he can get with exactlyk cuts? The area of a chocolate piece is the number of unit squares in it.

Input

A single line contains three integers n, m, k (1 ≤ n, m ≤ 109; 1 ≤ k ≤ 2·109).

Output

Output a single integer representing the answer. If it is impossible to cut the big chocolate k times, print -1.

Sample test(s)
input
3 4 1

output
6

input
6 4 2

output
8

input
2 3 4

output
-1

Note

In the first sample, Jzzhu can cut the chocolate following the picture below:


Codeforces Round #257 (Div. 1)449A - Jzzhu and Chocolate(贪婪、数学)

In the second sample the optimal division looks like this:


Codeforces Round #257 (Div. 1)449A - Jzzhu and Chocolate(贪婪、数学)

In the third sample, it’s impossible to cut a 2 × 3 chocolate 4 times.

题意:给出一个 n * m 大小的chocolate bar。你须要在这个bar上切 k 刀,使得最小的部分面积尽可能大,求出这个被划分后的最小部分面积最大能够为多少。假设这个chocolate bar 不能切成 k 部分,则输出-1。

注意,每一刀须要符合3个条件:1、打横切或打竖切; 2、每一刀仅仅能经过unit square(即1*1的单元bar)的边,也就是说不能把一个单元bar损坏,要完整; 3、每一刀仅仅能在整个chocolate bar的里面操作,也就是说,外围的四条边是不同意切的。4、每一刀都是不同样的。

思路转载

 首先要知道什么时候这个大bar不能切成 k 刀。

非常easy知道是假设k > (n-1)+(m-1) 的情况,由于外围的四条边是不同意操刀的!排除这个不能切的情况后。那么就要依据是从n(打横切)还是从m(打竖切)来进行讨论了。

只是由于我们不能一眼看出哪种方案更优。所以两者都要讨论下,我一開始仅仅想到 if 中的两条式子,n/(k+1)的意思表示这 k 刀都打横切,而分母为什么是k+1而不是k。是由于一刀能够把一个区域分成两部分,两刀就三个部分,依次类推。而我们须要求的是面积,就须要用到部分,而不是刀数了。m/(k+1)依此类推。

     只是问题出现了。我依据test10返回的wa结果来想出的^_^。

有可能全然打横切或者打竖切都没有切够k刀!那么就须要把剩余的刀数分到打竖切(相应之前全然打横切)或者打横切(相应之前的全然打竖切)中了。

也就是代码中else的部分。事实上完整的a1表达式是这种:n/(n-1) * m/(k-(n-1)+1)。意思:全然打横切,仅仅能切n-1刀,那么它划分的最小部分的面积就充当1了,至于m/(k-(n-1)+1) 表示 打竖切还能切多少刀,+1是由于是求分成的部分,而不是多少刀,与if中的n/(k+1)中的+1意思是同样的。

     (好开心这道题目排到最少用时的26名。继续努力!

 ^_^)

代码例如以下:

#include <cstdio>
#include <iostream>
#include <algorithm>
using namespace std;
#define LL __int64
int main()
{
	LL n, m, k;
	LL ans1, ans2;
	while(~scanf("%I64d%I64d%I64d",&n,&m,&k))
	{
		if(n-1+m-1 < k)
		{
			printf("-1\n");
			continue;
		}
		if(n >= k+1 || m >= k+1)
		{
			ans1 = n/(k+1)*m;
			ans2 = m/(k+1)*n;
		}
		else
		{
			ans1 = n/(k-(m-1)+1)*1;
			ans2 = m/(k-(n-1)+1)*1;
		}
		LL ans = max(ans1, ans2);
		printf("%I64d\n",ans);
	}
	return 0;
}

版权声明:本文博客原创文章,博客,未经同意,不得转载。

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请联系我们举报,一经查实,本站将立刻删除。

发布者:全栈程序员-站长,转载请注明出处:https://javaforall.net/117166.html原文链接:https://javaforall.net

(0)
上一篇 2022年1月9日 下午6:00
下一篇 2022年1月9日 下午7:00


相关推荐

  • vue脚手架基本使用[通俗易懂]

    vue脚手架基本使用[通俗易懂]vue脚手架基本使用

    2022年4月22日
    65
  • Vue开发工具vuejs-devtools超级详细安装教程以及常见问题解决

    Vue开发工具vuejs-devtools超级详细安装教程以及常见问题解决这绝对是最详细的 Vue 开发工具 vuejs devtools 安装教程 相信你只需要 5 分钟即可解决所有问题所需的所有文件 链接 https pan baidu com s 19GWDS 7GodIdFBUO0e 提取码 2yvc 一 vue js 插件下载下载地址 vue js 插件下载 点击进入 Vue 官网即可下载 共有两种版本的插件 开发版本 vue js 生产版本 vue main js 建议使用开发版本 开发版本有更多的错误信息提示和调试 文件较大 生产办文件小但是很多提示不全 解决开发

    2026年3月17日
    1
  • 极限思想之芝诺悖论[通俗易懂]

    极限思想之芝诺悖论[通俗易懂]芝诺悖论是古希腊哲学家芝诺提出的一组悖论。芝诺是一个很有学问,同时也很好玩的人(淘气)。他如果在中国出生,估计很难大学毕业,只能跟池子(脱口秀演员~)一样,高中教室门外面站三年课,然后去讲脱口秀糊口。阿基里斯,大家都知道。古希腊神话中的战神。无论是力量,速度,耐力,格斗技巧,都是巅峰级别的。一夜睡三女,第二天依然可以血染特洛伊的男人。芝诺就提出:在跑步比赛中,如果跑得最慢的乌龟一开始领先…

    2022年6月18日
    39
  • 电脑显示器尺寸对照表_显示器选购攻略

    显示器是属于电脑的I/O设备,即输入输出设备。它可以分为CRT、LCD等多种。它是一种将一定的电子文件通过特定的传输设备显示到屏幕上再反射到人眼的显示工具。当用电脑来放松娱乐时,一个好的显示器则是必不可少的,看VCD时画面稳定;玩游戏时现场逼真,有一种身临其境的感觉,那种感觉一定特棒,这一切都取决于你选择的显示器品质的高低,对显示器的知识有一个综合的了解无疑会对你有所帮助,下面将就这一问…

    2022年4月4日
    559
  • linux安装weget命令,linux安装wget命令

    linux安装weget命令,linux安装wget命令wget命令是linux系统下的一个常用命令。下面由学习啦小编为大家整理了linux安装wget命令的相关知识,希望大家喜欢!linux安装wget命令方法一debian或者ubuntu:sudoapt-getinstallwgetcentos:sudoyum-yinstallwgetlinux安装wget命令方法二我们先安装linux系统比如centos7.1里面有的就…

    2022年10月16日
    4
  • vim 撤销操作

    vim 撤销操作在使用 vim 编辑器进行撤销操作时 有两点 1 u nbsp 撤销上一步的操作 2 Ctrl r nbsp nbsp 恢复上一步被撤销的操作

    2025年6月3日
    3

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

关注全栈程序员社区公众号