一、題目解讀
1、原題
2、分類
雜題、水題
3、題意
運糧的人開始在第0層,電梯上升一層需要6s、下降一層需要4s、停留運糧需要5s.
給定一個層數列表,需按照上面的順序進行搬運,計算所需時間。
4、輸入輸出格式
輸入/輸出 | 要求與格式 |
---|---|
輸入樣例個數 | 通過輸入標識輸入結束 |
輸入格式(每個樣例) | 每一行輸入一個數,後接個層數(空格隔開) |
輸出格式(每個樣例) | 每行輸出一個結果 |
5、數據範圍
數據 | 範圍 |
---|---|
一切輸入 |
二、題解參考
1、總體思路
思路 | 時間複雜度 | 具體解釋 |
---|---|---|
窮舉法 | 直接模擬電梯按順序升降,逐層計算 |
2、思路①
(1).分析
考慮到問題規模很小,直接窮舉就OK了。
用一個變量來存儲當前所在層,將下一層和當前層的差傳入內聯函數calc計算(或者直接用三目運算符),計算表達式如下:
(2).AC代碼
HDU(C++/G++)AC代碼如下:
#include <iostream>
#include <algorithm>
using namespace std;
int a[105];
int now, res;
inline int calc(int num)
{
// 疑惑:是否需要考慮連續兩層都是同一層?——從AC的結果來看不用考慮
if (num < 0)
return -4 * num + 5;
return 6 * num + 5;
}
int main()
{
ios::sync_with_stdio(false), cin.tie(0), cout.tie(0);
int n;
while (cin >> n, n)
{
for (int i = 0; i < n; ++i)
cin >> a[i];
now = res = 0;
for (int i = 0; i < n; ++i)
{
res += calc(a[i] - now);
now = a[i];
}
cout << res << endl;
}
return 0;
}
三、評價與後話
1、評價
就是道水題,不燒腦。
2、後話
以後準備將大把精力花在ACM刷題上,fight!