題目描述:某國為了防禦敵國的飛彈襲擊,開發出一種飛彈攔截系統。但是這種飛彈攔截系統有乙個缺陷:雖然它的第一發炮彈能夠到達任意的高度,但是以後每一發炮彈都不能高於前一發的高度。某天,雷達捕捉到敵國的飛彈來襲,並觀測到飛彈依次飛來的高度,請計算這套系統最多能攔截多少飛彈。攔截來襲飛彈時,必須按來襲飛彈襲擊的時間順序,不允許先攔截後面的飛彈,再攔截前面的飛彈。
輸入:每組輸入有兩行,
第一行,輸入雷達捕捉到的敵國飛彈的數量k(k<=25),
第二行,輸入k個正整數,表示k枚飛彈的高度,按來襲飛彈的襲擊時間順序給出,以空格分隔。
輸出:每組輸出只有一行,包含乙個整數,表示最多能攔截多少枚飛彈。
樣例輸入:
8300 207 155 300 299 170 158 65
樣例輸出:
6
2023年北京大學計算機研究生機試真題
#define _crt_secure_no_warnings
#include #include #include #include #include #include #include #include #include #include #include #include #define inf 0x7fffffff
using namespace std;
const int maxn = 1e4 + 7;
int myints[maxn];
int lnis[maxn];//lnis[i]表示以aryint[i]為最小值得最長非上公升子串行的長度
int minv[maxn];//minv[i]表示長度為lnis[i]的最長非上公升子串行的最小元素(盡可能大)
bool comp(int a, int b)
int lnis(int aryint, int n)
else if (minv[lnis[i] - 1] >= aryint[i] && aryint[i] > minv[lnis[i]])
} return nmaxlnis;
}int main()
return 0;
}
by zzuwenjie 2017-3-30 19:59:48
再次編輯
空間優化,去掉了lnis陣列
#define _crt_secure_no_warnings
#include #include #include #include #include #include #include #include #include #include #include #include #define inf 0x7fffffff
using namespace std;
const int maxn = 1e4 + 7;
int myints[maxn]; //j表示以aryint[i]為最小值得最長非上公升子串行的長度
int dp[maxn];//dp[i]表示長度為j的最長非上公升子串行的最小元素(盡可能大)
bool comp(int a, int b)
int lnis(int aryint, int n)
else if (dp[j - 1] >= aryint[i] && aryint[i] > dp[j])
} return nmaxlnis;
}int main()
return 0;
}
附lis動規函式
const int n = 100007;
int a[n], dp[n];
int lis(int ary, int n)
else if (dp[j - 1] < ary[i] && ary[i] < dp[j])
} return maxlen;
}
飛彈攔截(最長非上公升子串行和最長上公升子串行)
題目鏈結 某國為了防禦敵國的飛彈襲擊,發展出一種飛彈攔截系統。但是這種飛彈攔截系統有乙個缺陷 雖然它的第一發炮彈能夠到達任意的高度,但是以後每一發炮彈都不能高於前一發的高度。某天,雷達捕捉到敵國的飛彈來襲。由於該系統還在試用階段,所以只有一套系統,因此有可能不能攔截所有的飛彈。輸入飛彈依次飛來的高度...
攔截飛彈(最長上公升子串行,最長不上公升子串行)
攔截飛彈 noip 1999 題目描述 張琪曼 老師,修羅場是什麼?墨老師 修羅是佛家用語,修羅畢生以戰鬥為目標,修羅場指的是他們之間的死鬥坑,人們通常用 修羅場 來形容慘烈的戰場。後來又引申出 乙個人在困境中做絕死奮鬥 的意思。所以,這其實也在暗示我們,即使是身處絕境,也不要放棄奮鬥。再說了,情況...
攔截飛彈 最長上公升子串行 LIS
某國為了防禦敵國的飛彈襲擊,開發出一種飛彈攔截系統。但是這種飛彈攔截系統有乙個缺陷 雖然它的第一發炮彈能夠到達任意的高度,但是以後每一發炮彈都不能高於前一發的高度。某天,雷達捕捉到敵國的飛彈來襲,並觀測到飛彈依次飛來的高度,請計算這套系統最多能攔截多少飛彈。攔截來襲飛彈時,必須按來襲飛彈襲擊的時間順...