時間限制: 2 sec 記憶體限制: 256 mb
提交: 243 解決: 30 [
提交][
狀態][
討論版]
alice所在的社團計畫一次外出遊玩。alice需要安排所有人入住的房間。社團一共訂了n個房間,然後alice給第i間房間安排了ai(0<=ai<=4)個人。向旅館提交了住宿資訊之後,alice發現如果出現乙個房間人數為1或者為2的情況,這個房間的社員就會感覺到孤獨和淒涼,會很失望。所以alice現在想調整一下,把某些社員調到其他房間,使得所有社員都不會感到孤獨。但是為了避免不必要的麻煩,她希望調整的人數最少。alice向bob求助,bob希望你能寫個程式求出最少需要調整的人數。
注意:你可以把乙個房間的初始人員都調出去,允許房間空閒,不允許某個房間人數超過4個。
第一行輸入乙個整數n(1<=n<=1000000),表示預定的房間數量。
接下來一行輸入n個數,第i個數是ai(0<=ai<=4),表示第i個房間初始有ai個人。
輸出乙個數,表示最少需要調整的人的數量,如果無論怎麼安排都不能滿足要求,輸出-1。
51 2 2 4 340 3 0 4
20
第乙個樣例最少需要調動2個人,將第乙個房間的乙個人調到第二個房間,從第四個房間調乙個人到第三個房間,最後人數為0 3 3 3 3,滿足要求。
第二個樣例不需要調動,所以答案是0
第六屆河海大學程式設計大賽
當時做了兩個多小時,硬是沒做出來,回來繼續按著思路寫,然後就ok了。
思路:1,2,3,4的房間分別記錄下來,當1等於2的時候,正好完全補上,當1大於2時,按照剩下的1自己組成3,然後餘下的乙個1或者2個1分別討論,當1小於2時,剩下的2正好3個2需要移動兩個,餘下1個2或者兩個2分別討論即可。
#include#includeusing namespace std;
int a[1000050];
int main()
for(int i=1;i<=4;i++)
if(cnt<3||cnt==5)
else
else
else
else
{cout<<"-1"<
NYOJ 房間安排
2010年上海世界博覽會 expo2010 是第41屆世界博覽會。於2010年5月1日至10月31日期間,在中國上海市舉行。本次世博會也是由中國舉辦的首屆世界博覽會。上海世博會以 城市,讓生活更美好 better city,better life 為主題,將充分探索21世紀城市生活。這次世博會總投資...
ACM 房間安排
時間限制 3000 難度 2 描述2010年上海世界博覽會 expo2010 是第41屆世界博覽會。於2010年5月1日至10月31日期間,在中國上海市舉行。本次世博會也是由中國舉辦的首屆世界博覽會。上海世博會以 城市,讓生活更美好 better city,better life 為主題,將充分探索...
NYOJ 房間安排168
房間安排 時間限制 3000 ms 記憶體限制 65535 kb 難度 2 描述2010年上海世界博覽會 expo2010 是第41屆世界博覽會。於2010年5月1日至10月31日期間,在中國上海市舉行。本次世博會也是由中國舉辦的首屆世界博覽會。上海世博會以 城市,讓生活更美好 better cit...