首页 > 其他分享 >CF402A 题解

CF402A 题解

时间:2022-08-25 00:33:47浏览次数:91  
标签:最大化 箱子 隔板 color 题解 d% CF402A

题目传送门

\(\color{red}{see}\space \color{blue}{in}\space \color{green}{my}\space \color{purple}{blog}\)

小学生又双叒叕来写题解啦!

看到其他题解描述得并不清晰,我就来一发。

这道题实际上不困难,重点就是贪心

只要遵循“能用隔板就用隔板,尽量将一个箱子所能装的坚果数最大化”的原则就好。

我们试着在一个箱子里塞尽可能多的隔板。

具体看这一部分代码:

if (b >= k - 1)  
//贪心,能用隔板就用隔板,尽量将一个箱子所能装的坚果数最大化。 
{
	b -= (k - 1);
	a -= k * v;   
}
else
{
	//隔板不够,为了最大化,就将全部隔板都塞进去。
	a -= (b + 1) * v;
	b = 0;
}

细心的童鞋会想到 \(a\) 这样减后不是可能会出现负数吗?

你想啊,\(a\) 既然能达到负数,那 \(a = 0\) 不就更能达到了吗!

所以并不需要特判什么的,一直循环,只需要在 \(a \le 0\) 时停止循环并输出答案就完事了。

最后给出完整代码:

#include <iostream>
#include <cstdio>
using namespace std;

int main()
{
	int k, a, b, v, cnt = 0;  //cnt 记录箱子的数量。 
	scanf("%d%d%d%d", &k, &a, &b, &v);
	while (true)
	{
		cnt++;
		if (b >= k - 1)  
		//贪心,能用隔板就用隔板,尽量将一个箱子所能装的坚果数最大化。 
		{
			b -= (k - 1);
			a -= k * v;   
		}
		else
		{
			//隔板不够,为了最大化,就将全部隔板都塞进去。
			a -= (b + 1) * v;
			b = 0;
		}
		//实际上,此时的 a 有可能为负数,但这显然不重要。 
		if (a <= 0) break;
	}
	printf("%d", cnt);
    return 0;
}

首发:2022-03-22 19:55:26

标签:最大化,箱子,隔板,color,题解,d%,CF402A
From: https://www.cnblogs.com/liangbowen/p/16622815.html

相关文章

  • AT4894 题解
    题目传送门小学生又双叒叕来写题解啦!翻了一下大家的思路,都用了数组,其实根本不用,可以一边读入一边判断。由于只需考虑前后两个数,所以只用两个变量就能实现滚动数组。若......
  • AT4783 题解
    题目传送门小学生又双叒叕来写题解啦!这题的关键就是贪心。看到N的范围,瞬间明白可能要排序。所以我们靠着排序来想。我们来思考一下怎样安排顺序。对于两个时间限......
  • AT4891 题解
    题目传送门小学生又双叒叕来写题解啦!这题的翻译貌似不完整。所谓怪兽与英雄的对决,就是双方同时扣同样的血,直到一方为零。弄懂题后,你会发现,这题不是考贪心,而是模拟。写......
  • AT4573 题解
    题目传送门小学生又双叒叕来写题解啦!我来介绍一种与众不同的跑得更慢的方法,那就是排序加二分。排序的作用是为了二分,因为二分的前提是数组有序。因此读入完数据后排序......
  • AT2141 题解
    题目传送门小学生又双叒叕来写题解啦!出布永远不会亏,所以只要能出布就出布。这就变成了个模拟题。需要记录石头的数量、布的数量、总分。送上满分代码:#include<iostr......
  • AT3524 题解
    题目传送门小学生又双叒叕来写题解啦!每个数都不受限制的可以变成三个数,那我们就用数组存每个数的变身情况,每次都给那三个数对应的计数器加一即可。然后呢?大家的思路都......
  • AT2162 题解
    题目传送门这题可以线性效率过,有位大神用哈希表虐橙题,太恶心厉害了,然而根本不需要。我使用双指针做这题,同样是线性效率!两个指针都是从零开始,分别指向两个字符串。每一......
  • AT3620 题解
    题目传送门做题的第一件事就是看范围。注意到范围,想到应该要使用\(O(n\times\logn)\)的办法。进而联想到排序与二分。事实证明的确要使用排序与二分。不说废话......
  • AT3525 题解
    题目传送门小学生又双叒叕来写题解啦!翻了一下大家的思路,怎么都一样?当数量达到\(10^7\)时,题解代码全爆掉!你问为什么,时间效率\(O(n)\)不稳过吗?对,可是空间复杂度呢,显......
  • AT2586 题解
    题目传送门许多人使用栈,然而根本不需要。先读入整个字符串,然后枚举每个字符。如果当前字符是左括号,往后搜,有就匹配并消除。然而消除这个动作太慢了,如果匹配到,只需把它......