4 条题解
-
1许栋轶 LV 10 @ 2023-1-18 16:39:24
贪心;
尽量让几个一起装更小,如果不行就单独装一个最大的
#include <iostream> #include <stack> #include <cmath> #include <vector> #include <string.h> #include <queue> #include <stdio.h> #include <iomanip> #include <cstdio> #include <algorithm> #define LL long long #define double long double using namespace std; const int N = 1e5 + 10; const int INF = 0x3f3f3f3f; int w, n, a[N]; signed main() { cin >> w; cin >> n; for(int i = 1; i <= n; i++) { cin >> a[i]; } sort(a + 1, a + n + 1); int l = 1, r = n, ans = 0; while(l <= r) { if(a[l] + a[r] <= w) { l++; r--; ans++; //合并 } else { r--; ans++; //单独 } } cout << ans << endl; return 0; }
-
02024-7-30 11:45:28@
#include <bits/stdc++.h> using namespace std; const int N=1e5+10; struct stu{ int id,t; }a[1005]; int cmp(int a,int b){ if(a>b) return 1; else return 0; } int main(){ int n,w,a[N]; cin>>w>>n; for(int i=1;i<=n;i++) cin>>a[i]; sort(a+1,a+n+1,cmp); int cnt=0; int i=1,j=n; while(i<=j){ if(a[i]+a[j]<=w){ cnt++; i++; j--; } else{ cnt++; i++; } } cout<<cnt; }
-
02024-6-1 20:00:07@
#include<bits/stdc++.h> using namespace std; int m[100000]; int main(){ int w,n,cnt=0; cin>>w>>n; for(int i=1;i<=n;i++) { cin>>m[i]; } sort(m+1,m+n+1); for(int i=1;i<=n;i++) { for(int j=n;j>=1;j--) { if(m[i]+m[j]<=w&&m[i]!=0&&m[j]!=0) { cnt++; m[i]=m[j]=0; } else if(m[i]+m[j]>w&&m[i]!=0&&m[j]!=0){ m[j]=0; } } } for(int i=1;i<=n;i++) { if(m[i]!=0/ *&&m[i]<=100* /) { cnt++; } } cout<<cnt; }
-
02024-3-13 18:45:43@
另类 #include<bits/stdc++.h> using namespace std; int m[100000]; int main(){ int w,n,cnt=0; cin>>w>>n; for(int i=1;i<=n;i++){ cin>>m[i]; } sort(m+1,m+n+1); for(int i=1;i<=n;i++){ for(int j=n;j>=1;j--){ if(m[i]+m[j]<=w&&m[i]!=0&&m[j]!=0){ cnt++; m[i]=m[j]=0; } else if(m[i]+m[j]>w&&m[i]!=0&&m[j]!=0){ m[j]=0; } } } for(int i=1;i<=n;i++){ if(m[i]!=0/&&m[i]<=100/){ cnt++; } } cout<<cnt; }
- 1
信息
- ID
- 692
- 时间
- 1000ms
- 内存
- 256MiB
- 难度
- 5
- 标签
- 递交数
- 151
- 已通过
- 56
- 上传者