兩道LIS經典題

2021-09-27 11:59:25 字數 2177 閱讀 7563

【題意】:某國為了防禦敵國的飛彈襲擊,發展出一種飛彈攔截系統。但是這種飛彈攔截系統有乙個缺陷:雖然它的第一發炮彈能夠到達任意的高度,但是以後每一發炮彈都不能高於前一發的高度。某天,雷達捕捉到敵國的飛彈來襲。由於該系統還在試用階段,所以只有一套系統,因此有可能不能攔截所有的飛彈。輸入飛彈依次飛來的高度(雷達給出的高度資料是不大於30000的正整數,飛彈數不超過1000),計算這套系統最多能攔截多少飛彈,如果要攔截所有飛彈最少要配備多少套這種飛彈攔截系統。

【分析】:第乙個輸出直接lis就行,對於第二個問要考慮貪心思想,考慮乙個攔截系統,起最後乙個的高度肯定越大越有利於後面的元素增加進來,所需要的系統肯定就越少。所以用乙個g陣列來維護其最小元素的最大值,元素的個數就是最終所需的最少的攔截系統的個數。

#include

#include

#include

using namespace std;

const

int maxn=

1e3+10;

int arr[maxn]

,t,dp[maxn]

;int g[maxn]

;int

main()

int ans=0;

for(

int i=

1;i<=tot;

++i)

}printf

("%d\n"

,ans)

; ans=0;

//貪心,g陣列維護最大的最短長度

for(

int i=

1;i<=tot;

++i)

printf

("%d\n"

,ans)

;system

("pause");

}

【題意】:為了對抗附近惡意國家的威脅,r國更新了他們的飛彈防禦系統。一套防禦系統的飛彈攔截高度要麼一直上公升要麼一直下降。例如,一套系統先後攔截了高度為3和高度為4的兩發飛彈,那麼接下來該系統就只能攔截高度大於4的飛彈。給定即將襲來的一系列飛彈的高度,請你求出至少需要多少套防禦系統,就可以將它們全部擊落。

樣例輸入(n<=50):

5

3 5 2 4 1

0

樣例輸出:

2
【分析】:對於每乙個元素,它只有兩種狀態:屬於上公升攔截系統或者屬於下降攔截系統,所以用乙個 dfs 既可以列舉所有狀態;直接 dfs 其時間複雜度肯定超時(2^50),所以隨便剪剪枝就好了。

#include

#include

#include

using namespace std;

const

int maxn=55;

int arr[maxn]

,n,up[maxn]

,down[maxn]

;int ans;

void

dfs(

int u,

int d,

int num)

//u為上公升系統的個數,d為下降系統的個數,num為陣列中低階個數

int k=1;

//屬於上公升子串行

while

(up[k]

>=arr[num]

&&k<=u) k++

;int t=up[k]

; up[k]

=arr[num];if

(k>u)

dfs(u+

1,d,num+1)

;else

dfs(u,d,num+1)

; up[k]

=t; k=1;

//屬於下降子串行

while

(down[k]

<=arr[num]

&&k<=d) k++

; t=down[k]

; down[k]

=arr[num];if

(k>d)

dfs(u,d+

1,num+1)

;else

dfs(u,d,num+1)

; down[k]

=t; k=1;

}int

main()

//system("pause");

}

兩道選擇題

教授面帶微笑,走進教室,對我們說 我受一家機構委託,來做一項問卷調查,請同學們幫個忙。一聽這話,教室裡輕微的一陣議論開了,大學課堂本來枯燥,這下好玩多了。問卷表發下來,一看,只有兩道題。第一題 他很愛她。她細細的瓜子臉,彎彎的娥眉,面色白皙,美麗動人。可是有一天,她不幸遇上了車禍,痊癒後,臉上留下幾...

兩道選擇題

記得大學一堂選修課上。教授面帶微笑,走進教室,對我們說 我受一家機構委託,來做一項問卷調查,請同學們幫個忙。一聽這話,教室裡輕微的一陣議論開了,大學課堂本來枯燥,這下好玩多了。問卷表發下來,一看,只有兩道題。第一題 他很愛她。她細細的瓜子臉,彎彎的娥眉,面色白皙,美麗動人。可是有一天,她不幸遇上了車...

兩道相似KMP題

1.poj 3450 coporate identity 這兩題的解法都是列舉子串,然後匹配,像這種題目以後可以不用kmp來做,直接字串自帶的strstr函式搞定,如果字串未出現,該函式返回null。下面貼出其比較。kmp版 1360ms 888kb include include include ...