4 条题解

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

        • 1

        信息

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