来到玩具国旅游,想要给同学们带一些礼物。 玩具国出售的物品分为玩具和箱子两种。每个玩具具有自己的体积 ,每个箱子具有自己的容积 。 第 个玩具可以装进第 个箱子,当且仅当 。同时,一个箱子只能装最多一件玩具,显然,一件玩具也最多只能被一个箱子装。 我们将一个用箱子装起来的玩具称为一份礼物。 按时间顺序,你一共购买了 件物品,它们有些是玩具,有些是箱子。 每次买下一件物品(箱子或玩具)后,你都想知道:对于目前你拥有的所有玩具和箱子,最多能组成多少份礼物。 输入格式 输入格式: 第一行包含一个正整数 表示你购买的物品数。 接下来 行,每行包含两个整数 ,保证 。 ,表示第 个物品是一个箱子,它的容积 。 ,表示第 个物品是一个玩具,它的体积 。 输出格式 输出格式: 输出 行,第 行表示购买第 个物品后,最多能组成多少份礼物。 样例 样例输入: 6 1 1 1 5 0 6 0 4 1 3 0 2 样例输出: 0 0 1 2 2 3 c++代码实现
时间: 2024-04-10 08:35:11 浏览: 25
下面是一个使用C++实现的解决方案:
```cpp
#include <iostream>
#include <vector>
#include <algorithm>
using namespace std;
int main() {
int n;
cin >> n;
vector<int> toys;
vector<int> boxes;
for (int i = 0; i < n; i++) {
int type, volume;
cin >> type >> volume;
if (type == 0) {
// 箱子
boxes.push_back(volume);
} else {
// 玩具
toys.push_back(volume);
}
// 对玩具和箱子进行排序
sort(toys.begin(), toys.end());
sort(boxes.begin(), boxes.end());
int numGifts = 0;
int toyPtr = 0;
for (int box : boxes) {
// 找到第一个能装下玩具的箱子
while (toyPtr < toys.size() && toys[toyPtr] <= box) {
toyPtr++;
}
if (toyPtr < toys.size()) {
numGifts++;
toyPtr++;
}
}
cout << numGifts << endl;
}
return 0;
}
```
该代码首先创建了两个向量,一个存储玩具的体积(toys),另一个存储箱子的容积(boxes)。
然后,对于每个购买的物品,我们按照箱子和玩具的体积进行排序。接下来,使用双指针的方法,遍历每个箱子并找到能够装下玩具的第一个箱子。
最后,输出能够组成的最多礼物数量。
请注意,该实现假设输入的箱子和玩具体积都是非负整数。
希望对你有帮助!如果有任何疑问,请随时问我。
相关推荐
![zip](https://img-home.csdnimg.cn/images/20210720083736.png)
![zip](https://img-home.csdnimg.cn/images/20210720083736.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)