1 条题解
-
0
#include <iostream> #include <vector> #include <algorithm> using namespace std; int main() { int w, n; cin >> w; // 读取价格上限 cin >> n; // 读取纪念品总数 vector<int> prices(n); // 存储每个纪念品的价格 // 读取纪念品的价格 for (int i = 0; i < n; ++i) { cin >> prices[i]; } // 对价格进行排序 sort(prices.begin(), prices.end()); int left = 0; // 左指针 int right = n - 1; // 右指针 int groups = 0; // 记录组数 while (left <= right) { // 尝试将最便宜的和最贵的纪念品配对 if (prices[left] + prices[right] <= w) { left++; // 配对成功,移动左指针 right--; // 移动右指针 } else { right--; // 配对失败,只能将右指针的纪念品单独分组 } groups++; // 不论配对成功与否,都增加组数 } cout << groups << endl; // 输出最少的组数 return 0; }
- 1
信息
- ID
- 809
- 时间
- 1000ms
- 内存
- 125MiB
- 难度
- 5
- 标签
- 递交数
- 52
- 已通过
- 17
- 上传者