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;
}

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

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

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

【正版授权,激活自己账号】: Jetbrains全家桶Ide使用,1年售后保障,每天仅需1毛

【官方授权 正版激活】: 官方授权 正版激活 支持Jetbrains家族下所有IDE 使用个人JB账号...

(0)
blank

相关推荐

  • 数据库系列之TiDB存储引擎TiKV实现机制

    数据库系列之TiDB存储引擎TiKV实现机制TiDB存储引擎TiKV是基于RocksDB存储引擎,通过Raft分布式算法保证数据一致性。本文详细介绍了TiKV存储引擎的实现机制和原理,加深对TiDB底层存储架构的理解。

  • 【cocos2d-x】尝鲜 Cocos Code IDE(不断更新)

    【cocos2d-x】尝鲜 Cocos Code IDE(不断更新)

  • Zigbee 协议栈

    Zigbee 协议栈Zigbee协议栈平台协议栈对我们的作用怎么使用协议栈协议栈的安装、编译与下载Components(部件)Documents(文件)Projects(项目例子)Tools(工具)平台协议TIZStack-CC2530-2.5.1a协议栈对我们的作用协议栈是协议的实现,可以理解为代码,函数库,供上层应用调用,协议较底下的层与应用是相互独立的。商业化的协议栈就是给你写好了底层的代码,符合协议标准,提供给你一个功能模块给你调用。你需要关心的就是你的应用逻辑,数据从哪里到哪里,怎么存储,处

  • PyYAML中文文档「建议收藏」

    PyYAML中文文档「建议收藏」PyYAML文档PyYAML现在维护在https://github.com/yaml/pyyaml。此页面仅用于历史目的。英文文档链接:http://pyyaml.org/wiki/PyYAMLDocumentation安装下载源码包PyYAML-3.12.tar.gz并解压缩。转到目录PyYAML-3.12并运行$pythonsetup….

  • vscode运行python_vscode python 调试

    vscode运行python_vscode python 调试Vscode+python+flake8安装配置使用总述Vscode+python环境下,配置flake8与yapf,以及使用方法1.1. Flake8——Python静态代码检查工具Flake8是由Python官方发布的一款辅助检测Python代码是否规范的工具,相对于目前热度比较高的Pylint来说,Flake8检查规则灵活,支持集成额外插件,扩展性强。Flake8是对下面三个工具的封装: PyFlakes:静态检查Python代码逻辑错误的工具。 Pep8:静态检查PEP

  • 最大公约数(Greatest Common Divisor)

    最大公约数(Greatest Common Divisor)

发表回复

您的电子邮箱地址不会被公开。

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