Luogu p1020飛彈攔截

2021-08-31 03:26:43 字數 746 閱讀 8094

dp的做法,複雜度是 o(n^2),只能得100分,乙個dp求的是最長下降子串行長度,乙個dp求的是最少有多少個最長不上公升序列,

#includeusing namespace std;

const int maxn=1e5+5;

int f[maxn];

int dp[maxn];

int main()

n--;

dp[1]=1;

int res=0;

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

res=max(res,dp[i]);

} cout用乙個二分,複雜度就降到o(nlogn) (我也是看的洛谷題解的第一篇,想破腦袋也想不出來 dp+貪心

#includeusing namespace std;

const int maxn=1e5+5;

int h[maxn];

int f[maxn];

int main()

n--;

f[0]=9e6+5;

for(int i=1;i<=n;++i)//f[x]代表長度為x的最大結點

else

else r=mid;

} if(l!=0) f[l]=h[i];

} }coutelse

else l=mid+1;

} f[l]=h[i];

} } cout

}

luogu P1020 飛彈攔截

p1020 飛彈攔截 題目詳情 題目分析 一開始用的單調棧,後來發現不行,因為如果我們假設有這樣的序列 3 2 1 99 1當遍歷到99時,我們的棧會被我們自動清除,這時最後的最長不上公升序列就只有3,而正確答案是4。upper bound 返回有序序列中第乙個大於查詢值的指標。lower boun...

1020 飛彈攔截

難度 普及 提高 題目型別 動規 提交次數 1 涉及知識 線性動規 某國為了防禦敵國的飛彈襲擊,發展出一種飛彈攔截系統。但是這種飛彈攔截系統有乙個缺陷 雖然它的第一發炮彈能夠到達任意的高度,但是以後每一發炮彈都不能高於前一發的高度。某天,雷達捕捉到敵國的飛彈來襲。由於該系統還在試用階段,所以只有一套...

P1020 飛彈攔截

題目描述 某國為了防禦敵國的飛彈襲擊,發展出一種飛彈攔截系統。但是這種飛彈攔截系統有乙個缺陷 雖然它的第一發炮彈能夠到達任意的高度,但是以後每一發炮彈都不能高於前一發的高度。某天,雷達捕捉到敵國的飛彈來襲。由於該系統還在試用階段,所以只有一套系統,因此有可能不能攔截所有的飛彈。輸入飛彈依次飛來的高度...