NOI 4977 怪盜基德的滑翔翼(LIS)

2022-06-20 22:30:13 字數 1308 閱讀 1690

描述:怪盜基德是乙個充滿傳奇色彩的怪盜,專門以珠寶為目標的超級盜竊犯。而他最為突出的地方,就是他每次都能逃脫中村警部的重重圍堵,而這也很大程度上是多虧了他隨身攜帶的便於操作的滑翔翼。

有一天,怪盜基德像往常一樣偷走了一顆珍貴的鑽石,不料卻被柯南小朋友識破了偽裝,而他的滑翔翼的動力裝置也被柯南踢出的足球破壞了。不得已,怪盜基德只能操作受損的滑翔翼逃脫。

假設城市中一共有n幢建築排成一條線,每幢建築的高度各不相同。初始時,怪盜基德可以在任何一幢建築的頂端。他可以選擇乙個方向逃跑,但是不能中途改變方向(因為中森警部會在後面追擊)。因為滑翔翼動力裝置受損,他只能往下滑行(即:只能從較高的建築滑翔到較低的建築)。他希望盡可能多地經過不同建築的頂部,這樣可以減緩下降時的衝擊力,減少受傷的可能性。請問,他最多可以經過多少幢不同建築的頂部(包含初始時的建築)?

輸入輸入資料第一行是乙個整數k(k < 100),代表有k組測試資料。

每組測試資料報含兩行:第一行是乙個整數n(n < 100),代表有n幢建築。第二行包含n個不同的整數,每乙個對應一幢建築的高度h(0 < h < 10000),按照建築的排列順序給出。輸出對於每一組測試資料,輸出一行,包含乙個整數,代表怪盜基德最多可以經過的建築數量。

樣例輸入

3

8300 207 155 299 298 170 158 65

865 158 170 298 299 155 207 300

102 1 3 4 5 6 7 8 9 10

樣例輸出

669

思路:

題目很簡單,就是左右各求乙個lis即可。

#include#include

#include

#include

using

namespace

std;

const

int maxn = 100 + 5

;int

n;int

a[maxn];

intdl[maxn], dr[maxn];

intmain()

for (int i = n-2; i >=0; i--)

int ans = 0

;

for (int i = 0; i < n; i++)

ans =max(ans, max(dl[i], dr[i]));

cout

<< ans <

}return0;

}

4977 怪盜基德的滑翔翼

name 4977 怪盜基德的滑翔翼 author date 09 08 17 09 25 description 4977 怪盜基德的滑翔翼 檢視 提交 統計 提問 總時間限制 1000ms 記憶體限制 65536kb 描述怪盜基德是乙個充滿傳奇色彩的怪盜,專門以珠寶為目標的超級盜竊犯。而他最為突...

4977 怪盜基德的滑翔翼

總時間限制 1000ms 記憶體限制 65536kb 描述 怪盜基德是乙個充滿傳奇色彩的怪盜,專門以珠寶為目標的超級盜竊犯。而他最為突出的地方,就是他每次都能逃脫中村警部的重重圍堵,而這也很大程度上是多虧了他隨身攜帶的便於操作的滑翔翼。有一天,怪盜基德像往常一樣偷走了一顆珍貴的鑽石,不料卻被柯南小朋...

怪盜基德的滑翔翼

描述 怪盜基德是乙個充滿傳奇色彩的怪盜,專門以珠寶為目標的超級盜竊犯。而他最為突出的地方,就是他每次都能逃脫中村警部的重重圍堵,而這也很大程度上是多虧了他隨身攜帶的便於操作的滑翔翼。有一天,怪盜基德像往常一樣偷走了一顆珍貴的鑽石,不料卻被柯南小朋友識破了偽裝,而他的滑翔翼的動力裝置也被柯南踢出的足球...