2 条题解
-
1
#include <bits/stdc++.h> using namespace std; int n,w,a[11],ans=INT_MAX; int main(){ cin>>n>>w; for(int i=1;i<=n;i++)cin>>a[i]; sort(a+1,a+1+n); do{ int num=1,sum=0; for(int i=1;i<=n;i++){ if(sum+a[i]>w) sum=0,num++; sum+=a[i]; } ans=min(ans,num); }while(next_permutation(a+1,a+1+n)); cout<<ans; return 0;}
-
0
#include <iostream> #include <vector> #include <algorithm> using namespace std; int main() { int n, w; cin >> n >> w; vector<int> weights(n); for (int i = 0; i < n; ++i) { cin >> weights[i]; } // 将学生的重量从小到大排序 sort(weights.begin(), weights.end()); int cost = 0; // 记录支付的钱数 int left = 0, right = n - 1; // 左右指针,分别指向最轻和最重的学生 while (left <= right) { if (weights[left] + weights[right] <= w) { // 如果最轻和最重的学生一起坐缆车不超过承重,就让他们一起坐 ++left; --right; } else { // 如果最重的学生单独坐缆车超过承重,只让最重的学生单独坐 --right; } // 每租用一辆缆车,支付1元钱 ++cost; } cout << cost << endl; return 0; }
- 1
信息
- ID
- 619
- 时间
- 1000ms
- 内存
- 256MiB
- 难度
- 6
- 标签
- 递交数
- 242
- 已通过
- 70
- 上传者