洛谷:P2676:Bookshelf B


洛谷:P2676:Bookshelf B

Table of Contents

题目

P2676:Bookshelf B

分析

本题有“贪心”的思路:要用最少数量的牛叠加而达到暑假的高度,那么一定优先将身高最高的牛叠起来。所以,第一步是排序。

然后,本题中是要按照身高降序排序,而一般情况下sort(...)是升序排序。我们可以提供一个定制的cmp函数,但也可以在升序排序后(小到大),用reverse将整个数组反转。

sort(cows.begin(), cows.end());
reverse(cows.begin(), cows.end());

牛的身高排序完成后,我们在while循环中不断增加一头牛,直到它们的总高度超过了书架的高度。

int count = 0, current_height = 0;
while (current_height < shelf_height)
{
    current_height += cows[count];
    count++;
}

答案

Solution

思考

(略)

Previous Next