题目连接:https://nanti.jisuanke.com/t/15766html
文章最后给出了题目的完整描述,也可点击连接查看题目。ios
官方题解:https://www.jisuanke.com/article/9v3lgyb4数组
这应该是一道简单题,可是须要考虑到几组特例 ( ▼-▼ ) 不少人WA在特例上
服务器
个人思路:网络
#include<iostream> #include<algorithm> using namespace std; int main() { int n,m; cin>>n>>m; int a[101]; for(int i=0; i<m; ++i) cin>>a[i]; sort(a,a+m,greater<int>()); //降序 if(n==0 || n==1) //n等于0时,即服务器数量为0,此时不须要分线器。n等于1时,即仅有一台服务器,此时这台服务器直接链接网线便可,不须要分线器。 cout<<0<<endl; else{ int mount=0; bool flag=true; for(int i=0; i<m; ++i){ mount += a[i]; //前i个分线器网线根数之和 if((mount-i) >= n){ //实际链接服务器的网线根数 cout<<i+1<<endl; flag=false; //全部服务器都有网线可用,跳出循环,改变标记状态 break; } } if(flag) //循环结束后,不能使得全部服务器都有网线可用。由于若循环时检测到全部服务器都有网线可用的状况,则标记状态会改 cout<<"Impossible\n"; } return 0; }
UCloud 刚刚创建一个新机房,近日正在进行网络搭建。机房内有 url
n 台服务器和 m 个分线器,整个机房只有一个网线出口。分线器的做用是将一根网线转换成多根网线。蒜头君也知道每一个分线器输出的最大网线根数(不必定要将分线器输出的每根线都用上),问你至少须要使用多少个分线器才能使得每台服务器都有网线可用。spa
第一行输入 n,m(0≤n,m≤100)。3d
第二行输入包含 m 个整数的数组 A(0≤Ai≤10) 表示每一个分线器输出的最大网线根数。code
输出最少须要的分线器数量。若不能使得全部服务器都有网线可用,输出一行Impossible
。htm
一共须要 3 个分线器,最大输出根数分别为 7,3,2,链接方法以下图所示:
10 4 2 7 2 3
3