4 条题解

  • 0
    @ 2024-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;
    }
    
    • 0
      @ 2024-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;
       }
      
    • 0
      @ 2024-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; }

      • 0
        @ 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;
        }
        
        
        • 1

        信息

        ID
        692
        时间
        1000ms
        内存
        256MiB
        难度
        5
        标签
        递交数
        152
        已通过
        57
        上传者