演算法效率的時間空間效率完全沒有考慮(大鳥無噴),但是可能是最直觀的,最白痴的思路。沒有運用***演算法思想,就是保證沒讀過演算法相關書籍的任何人都能讀懂。
題目出處:
題目如下:防禦飛彈problem
某國為了防禦敵國的飛彈襲擊,發展出一種飛彈攔截系統。
但是這種飛彈攔截系統有乙個缺陷:雖然它的第一發炮彈能夠達到任意的高度,但是以後每一發炮彈都不能高於前一發的高度。
某天,雷達捕捉到敵國的飛彈來襲。由於該系統還在使用階段,所以只有一套系統,因此有可能不能攔截所有的飛彈。
input
最多20個整數,分別表示飛彈依次飛來的高度(雷達給出高度資料是不大於30000的正整數)
output
兩個整數m和n。表示:這套系統最多能攔截 m 枚飛彈,如果要攔截所有飛彈最少要配備 n 套這種飛彈系統。
sample input
300 250 275 252 200 138 245
sample output
5 2
首先,最直觀的思考如下:問題翻譯:本問題就是要求解某個隨機序列的最長降序序列思考:對於目標序列s,分成兩段,其中s1為已經遍歷過的,s2為未遍歷過的。
運用某種資料結構,儲存s1中所有可能的降序序列段,然後每次把s2中的第乙個元素加入s1,並修改s1所有的降序序列段,保證新生成的降序序列段為新的s1的降序序列段。
通過這個思路,可以想到用aov網(拓撲排序)來儲存所有的降序序列段,每次從s2獲得新的元素新增進s1就相當於遍歷樹的所有節點,如果已儲存的節點的值大於等於新節點的值,則把該新節點的副本加入該節點的子串行。
所求的最長序列m就是aov網的深度,所求的需要多少個系統n就是aov網的終端節點數量。原始碼:
飛彈防禦塔
freda的城堡遭受了 m 個入侵者的攻擊!freda控制著 n 座飛彈防禦塔,每座塔都有足夠數量的飛彈,但是每次只能發射一枚。在發射飛彈時,飛彈需要 t1 秒才能從防禦塔中射出,而在發射飛彈後,發射這枚飛彈的防禦塔需要 t2 分鐘來冷卻。所有飛彈都有相同的勻速飛行速度 v,並且會沿著距離最短的路徑...
飛彈防禦系統
飛彈防禦系統 為了對抗附近惡意國家的威脅,r國更新了他們的飛彈防禦系統。一套防禦系統的飛彈攔截高度要麼一直嚴格單調上公升要麼一直嚴格單調下降。資料範圍 1 n 50 輸入樣例 5 3 5 2 4 1 0輸出樣例 2樣例解釋 對於給出樣例,最少需要兩套防禦系統。一套擊落高度為3,4的飛彈,另一套擊落高...
飛彈防禦系統 飛彈攔截系統
題目鏈結 引言 請忽略 今天是小白acm集訓的日子,然後資料結構實在是太難了,真是學不動了,然後就只能無助地去複習以前的題了,記得以前在sdut程設二裡面有一道題叫最少攔截系統,它是一道貪心,我個人覺得最長上公升子串行的思路跟它有些相似。我們先分析一下這道題,引入一下這道最少攔截系統的題幹和 最少攔...