题解
独木舟
1 条题解
-
0
#include <bits/stdc++.h> using namespace std; int w, n; // 最大承重和物品数量 int a[30005]; // 存储物品重量的数组 int s = 0; // 船只数量计数器 // 自定义比较函数,用于降序排序 bool cmp(int a, int b) { return a > b; } int main() { cin >> w >> n; // 输入最大承重和物品数量 for(int i = 1; i <= n; i++) { cin >> a[i]; // 输入每个物品的重量 } // 使用自定义比较函数进行降序排序 sort(a + 1, a + n + 1, cmp); int L = 1, R = n; // 初始化两个指针 while(L <= R) { // 当还有物品未处理时 // 如果最重和最轻的物品可以配对 if(a[L] + a[R] <= w) { L++; // 移动左指针,表示最重的物品已配对 R--; // 移动右指针,表示最轻的物品已配对 } else { L++; // 只移动左指针,表示最重的物品单独出船 } s++; // 每次循环代表一艘船 } cout << s << endl; // 输出所需的船只数量 return 0; }
- 1