小Q系列故事——電梯裡的愛情
Time Limit: 300/100 MS (Java/Others) Memory
Limit: 65535/32768 K (Java/Others)
Problem Description
細心的同事發現,小Q最近喜歡乘電梯上上下下,究其原因,也許只有小Q自己知道:在電梯裡經常可以遇到他心中的女神HR。
電梯其實是個很暧昧的地方,只有在電梯裡,小Q才有勇氣如此近距離接近女神,雖然覺得有點不自在,但次數多了,女神也習慣了小Q的存在,甚至熟悉到仿佛不說上句話自己也都覺得不合適了。可是,他們的談話也僅僅限於今天天氣不錯啊或是你吃了嗎之類的,往往在對方微笑點頭後就再次陷入難堪的沉默之中。 於是,小Q便在陪伴女神的同時,也關注著電梯中顯示的樓層數字,並且他注意到電梯每向上運行一層需要6秒鐘,向下運行一層需要4秒鐘,每開門一次需要5秒(如果有人到達才開門),並且每下一個人需要加1秒。
特別指出,電梯最開始在0層,並且最後必須再回到0層才算一趟任務結束。假設在開始的時候已知電梯內的每個人要去的樓層,你能計算出完成本趟任務需要的總時間嗎?
這是個很簡單的問題,要知道,小Q已經修煉到快速心算出結果的境界,現在你來編程試試吧!
Input
輸入首先包含一個正整數C,表示有C組測試用例。
接下來C行每行包含一組數據,每組數據首先是一個正整數N,表示本次乘坐電梯的人數,然後是N個正整數Ai,分別表示大家要去的樓層。
[Technical Specification]
C<=100
N<=15
Ai<=100
Output
請計算並輸出完成一趟任務需要的時間,每組數據輸出占一行。
Sample Input
2
4 2 4 3 2
3 10 10 10
Sample Output
59
108
以前也看過這個題,但是沒做。今天又見到,我決定AC它。仔細分析後,發現這題其實很簡單的,只需用一個cnt數組記錄每層樓下幾個人,那麼在每個樓層消耗的時間就能算出來,最後加上電梯上去和下來的時間即可。
#include
#include
int main()
{
int a, i, c, n, cnt[105];
scanf("%d",&c);
while(c--)
{
scanf("%d",&n);
memset(cnt, 0, sizeof(cnt));
int Max = 0;
for(i = 0; i < n; i++)
{
scanf("%d",&a);
cnt[a]++;
if(a > Max)
Max = a;
}
int ans = Max * 10; //不考慮上下人時,上去和下來的時間
for(i = 1; i <= Max; i++)
{
if(cnt[i])
ans += 5 + cnt[i]; //開門時間和下人時間
}
printf("%d\n",ans);
}
return 0;
}