某國(guó)為了防御敵國(guó)的導(dǎo)彈襲擊,發(fā)展出一種導(dǎo)彈攔截系統(tǒng).但是這種導(dǎo)彈攔截系統(tǒng)有一個(gè)缺陷:雖然它的第一發(fā)炮彈能夠到達(dá)任意的高度,但是以后每一發(fā)炮彈都不能超過(guò)前一發(fā)的高度.某天,雷達(dá)捕捉到敵國(guó)的導(dǎo)彈來(lái)襲.由于該系統(tǒng)還在試用階段,所以只有一套系統(tǒng),因此有可能不能攔截所有的導(dǎo)彈. 怎么辦呢?多搞幾套系統(tǒng)唄!你說(shuō)說(shuō)倒蠻容易,成本呢?成本是個(gè)大問(wèn)題啊.所以俺就到這里來(lái)求救了,請(qǐng)幫助計(jì)算一下最少需要多少套攔截系統(tǒng). Input 輸入若干組數(shù)據(jù).每組數(shù)據(jù)包括:導(dǎo)彈總個(gè)數(shù)(正整數(shù)),導(dǎo)彈依此飛來(lái)的高度(雷達(dá)給出的高度數(shù)據(jù)是不大于30000的正整數(shù),用空格分隔) Output 對(duì)應(yīng)每組數(shù)據(jù)輸出攔截所有導(dǎo)彈最少要配備多少套這種導(dǎo)彈攔截系統(tǒng). Sample Input 8 389 207 155 300 299 170 158 65 Sample Output 2
a[i]>dp[j] j++; 遍歷完 tot++;dp[tot]=a[i];
#include <cstdio>#include <cstring>#include <string>#include <iostream>#include <algorithm>using namespace std;const int maxn=100000;int dp[maxn];int main(){ int n; while(cin>>n) { memset(dp,0,sizeof(dp)); int x,i,j; int m=0; for(i=0;i<n;i++){ cin>>x; for(j=0;j<m;j++) { if(x<=dp[j]) { dp[j]=x; break; } } if(j>=m) { dp[m++]=x; } }新聞熱點(diǎn)
疑難解答
圖片精選
網(wǎng)友關(guān)注