2 条题解

  • 0
    @ 2024-12-14 21:47:29

    贪心 用的while语句,没用2层for循环

    #include <bits/stdc++.h>
    using namespace std;
    int w,n,a[30010],ans=0;
    int main(){
    	//freopen("kaj.in","r",stdin);
    	//freopen("kaj.out","w",stdout);
    	cin>>w>>n;
    	for(int i=1;i<=n;i++){
    		cin>>a[i];
    	}
    	sort(a+1,a+n+1);
    	int i=1,y=n;
    	while(i<=y){//从小匹配大的 
    		if(a[i]+a[y]<=w){
    			ans++;
    			i++;
    			y--;
    		}else{
    			ans++;
    			y--;
    		}
    	}//两边同时进行,加减数 
    	cout<<ans;
    	return 0;
    }
    

    仅供参考

    信息

    ID
    444
    时间
    1000ms
    内存
    256MiB
    难度
    8
    标签
    递交数
    133
    已通过
    24
    上传者