[CF342C]Cupboard and Balloons 题解

前言

博主太弱了

题解

这道题目是一个简单的贪心。
首先毋庸置疑,柜子的下半部分是要放满的。
于是我们很容易想到,分以下三种情况考虑:

[small ext{请不要盗图,如需使用联系博主} ]

我们考虑如何辨别情况,不妨设(m \% r)( left),如果(left < frac{r}{2}),那么显然当前的情况是1;如果(frac{r}{2} leq left<frac{sqrt{3}r}{2}),那么显然当前的情况是2;如果(frac{sqrt{3}r}{2} leq left)那么显然当前的情况是情况3。
那么实现起来就很简单了。
首先计算(frac{m}{r}),然后对于情况几就加上几。

代码

#include <cstdio>
#include <cmath>

int main(){
	int r, h; scanf("%d %d", &r, &h);
	int lft = h % r, ans = (h / r) * 2 + 1;
	if (lft >= (double)(r) / 2.0 * sqrt(3)) ans += 2;
	else if (lft >= (double)(r) / 2) ++ans;
	printf("%d", ans);
	return 0;
}
原文地址:https://www.cnblogs.com/linzhengmin/p/11180938.html