題目連接: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