top1编程
← 返回题目
题解

【提高】加工零件

1 条题解

  • 0
    @ 2026-7-29 0:18:48
    #include <bits/stdc++.h>
    using namespace std;
    int a[110], s, n, m;
    int main(){
    	cin >> m >> n;//m个零件  n个工人
    	for (int i = 1; i <= n; i++) {
    		cin >> a[i];//输入n个工人的能力值
    	}
    	// 优先安排加工数量多的师傅
    	sort(a + 1, a + n + 1);
    	//由于能力值是从小到大排,所以要从后面开始安排
    	for (int i = n; i >= 1; i--) {
    		s += a[i];
    		// 第一次达到任务量时,i 就是需要的最少师傅数
    		if (s >= m) {
    			cout << n - i + 1;//n-i+1表示安排的工人的数量
    			break;
    		}
    	}
    	// 所有师傅都安排上还不够,就输出 NO
    	if (s < m) {
    		cout << "NO";
    	}
    	return 0;
    }
    
    • 1