需要安排几位师傅加工零件?c++

题目描述

某工厂有n个零件加工的师傅,每位师傅每天能够加工出不同数量的零件。现有m个零件要求一天加工完,请问该工厂最少需要派几个师傅来完成这次零件加工任务,如果安排所有的师傅都参与加工也不能在一天内完成任务,请输出"NO"。

输入

第一行有两个整数,用空格隔开;第一个整数代表要加工的总零件个数m(m<=10^6,就是10的6次方),第二个整数代表工厂的零件加工师傅的数量n(n<=100)。

第二行有n个整数,分别代表每个师傅每天能够加工出来的零件数量(每个师傅每天加工的零件数量<=10^4,就是10的4次方)。

输出

工厂在1天时间内加工所有零件需要的师傅数量或者输出NO。

样例输入

复制代码
10 5
1 3 2 4 2

样例输出

复制代码
4

分析:

最少,所以要先派做零件最多的师傅来加工,再派第2多的,第3多的......这样才能保持最少

最后如果安排所有的师傅都参与加工也不能在一天内完成任务,输出"NO"即可

cpp 复制代码
#include<bits/stdc++.h>
using namespace std;
int main(){
    long long m,n,a[101],cc=0,sum=0;
    cin>>m>>n;
    for(int i=1;i<=n;i++){
    	cin>>a[i];
	}
	sort(a+1,a+1+n);
	for(int i=n;i>=1;i--){
		cc=cc+a[i];
		sum++;
		if(cc>=m){//<------------------
			cout<<sum;//  | 如果可以做完 ------
			return 0;//------------              |
		}//                              |此处不执行
	}//                                  |否则执行
	cout<<"NO";//<------------------------------------------------------------------------
    return 0;
}
相关推荐
旖-旎8 小时前
《LeetCode647 回文子串 || LeetCode 5 最长回文子串》
c++·算法·leetcode·动态规划·哈希算法
Darkwanderor9 小时前
对Linux的进程控制的研究
linux·运维·c++
云泽8089 小时前
从零吃透 C++ 异常:抛出捕获、栈展开、异常重抛与编码规范详解
开发语言·c++·代码规范
REDcker9 小时前
libdatachannel 快速入门
c++·webrtc·datachannel
second6011 小时前
第一部分:快速上手 —— 建立 C++ 基本语法与编程范式
开发语言·c++
郝学胜-神的一滴11 小时前
算法实战:最小k个数——大顶堆的优雅解法
开发语言·数据结构·c++·python·程序人生·算法·排序算法
bksczm11 小时前
linux之线程概念和控制
linux·开发语言·c++
hehelm12 小时前
Linux网络编程—TCP字典翻译系统
linux·开发语言·网络·c++·tcp/ip
hansang_IR12 小时前
【记录】「SCOI2016」三道模拟赛/26.7.12
c++·算法
会周易的程序员13 小时前
从零构建多核CPU负载自适应控制系统
linux·c++·笔记·物联网·测试工具