住在月亮上山上的円円族,在舉行完祭月儀式後,並沒有順利解決問題,因為円円族長老所找到願意參加祭月儀式的円円數量實在是太少了。在那之後,由於月相的變異,導致了円円族主食高棕櫚的生產量越來越少,因此円円族們舉辦了部落會議來討論如何解決這個問題。
為了解決糧食問題,円円族決定要擴展他們的領土。円円族們原本居住在黃河流域(黃河又稱黃River)北方的月亮山上,因為黃河曾經發展出黃河流域文化,円円族們看上了這一點打算要攻下黃河,佔地為王。經過部落會議之後,円円族們決定推派變態円円們去攻打黃River。
居住在黃河流域的居民們得知這件事後,決定建造萬里長城來抵禦円円族的攻擊,請身為建築工程師的你幫忙。萬里長城的特色就是城牆一側總是一高一低的,居民們希望你造的城牆越長越好,而建造城牆的建材是石頭,每塊石頭可能有不同的高度。
但是供應石頭的廠商非常討厭,他每送一塊石頭就會問你要不要買,如果你不買,那塊就永遠不會再賣給你。而且時間非常緊迫,你一買一塊石頭就要馬上用,而且一定要按照購買的順序建造。
你透過一些內部的管道,得知廠商即將供應給你的石頭高度的順序,你能建造出多長的城牆呢?
有幾點可能要注意一下:
1. 石頭不能疊起來,也不能躺下來,不然間隔的接縫會不整齊。
2. 一定要滿足一塊高一塊低的方式,也就是建造好萬里長城的高度序列若為$H$的話,$H_i$滿足$H_i > H_{i-1},H_{i+1}$或$H_i < H_{i-1},H_{i+1}$。
3. 城牆的兩側,一定要是比旁邊那塊還高,不然城牆會很醜。若萬里長城長度為$L$,則滿足$(H_1 > H_2$ , $H_{L-1} < H_L)$。
4. 這家廠商相當的優質,每塊石頭的長寬都是一單位,只有高度不均。
輸入的第一行包含一個整數 $T(1\leq T \leq 10)$,代表接下來有 $T$ 筆測試資料
每筆測試資料的第一行包含一個正整數 $N$,代表廠商將供應給你的石頭數量 $(0 < N \leq 10^6)$。接下來有一行,包含 $N$ 個數字 $h_i$,以空白隔開,依照順序代表每塊石頭的高度$(0 < h_i < 2^{31})$
對於 $30\%$ 的測試資料保證 $1\leq N\leq 10$
對於 $60\%$ 的測試資料保證 $1\leq N\leq 5000$
對於 $80\%$ 的測試資料保證 $1\leq N\leq 10^5$
對於 $100\%$ 的測試資料保證 $1\leq N\leq 10^6$
對每一筆測試資料輸出你最多能建造多長的城牆。
範例輸入中第二筆輸入測試資料可以建造長度為 $3$ 的方案有:
$3$ $2$ $1$ $2$ $3$
$3$ $2$ $1$ $2$ $3$
$3$ $2$ $1$ $2$ $3$
$3$ $2$ $1$ $2$ $3$
$3$ $2$ $1$ $2$ $3$
$3$ $2$ $1$ $2$ $3$
NEOJ Problem 74
No. | Testdata Range | Constraints | Score |
---|---|---|---|
1 | 0~2 | 30 | |
2 | 0~5 | 30 | |
3 | 0~7 | 20 | |
4 | 0~9 | 20 |