86分贪心求调!!!
查看原帖
86分贪心求调!!!
821893
xinglinjie楼主2025/7/24 11:29
#include<bits/stdc++.h>
using namespace std;
bool st[20];
int n,w,sum;
bool check(){
	for(int i=0;i<n;i++)if(!st[i])return 0;
	return 1;
}
int main(){
	cin>>n>>w;
	int a[20];
	for(int i=0;i<n;i++)cin>>a[i];
	while(!check()){
		int car=w;
		for(int i=0;i<n;i++){
			if(!st[i]){
				st[i]=1;
				car-=a[i];
				while(car>0){
					int minn=-1e8,mini;
					bool stt=0;
					for(int j=1;j<n;j++){
						if(st[j])continue;
						if(car-a[j]>=0&&car-a[j]<car-minn){
							stt=1;
							minn=a[j];
							mini=j;
						}
					}
					if(!stt)break;
					car-=a[mini];
					st[mini]=1;
				}
				break;
			}
		}
		sum++;
	}
	cout<<sum; 
	return 0;
}

2025/7/24 11:29
加载中...