p1020 飛彈攔截

2022-07-12 02:09:12 字數 1152 閱讀 2208

今天做了這道1020,感覺有點啟發,來寫寫

先貼上**:

1 #include 2 #include 3

using

namespace

std;

4const

int n = 100010;5

inta[n], d1[n], d2[n], n;

6int

main() 721

if (d2[len2] 22 d2[++len2] =a[i];

23else

2428

}29 cout << len1 << endl <30return

0; 31}

32//

lower_bound會找出序列中第乙個大於等於x的數 兩個都必須是公升序才能使用

33//

upper_bound會找出序列中第乙個大於x的數

思路:這道題目說白了就是要求不上公升序列長度和乙個上公升序列長度,以及運用兩個stl函式lower_bound和upper_bound。

lower_bound和upper_bound注意事項:

兩個函式必須在有序的情況下使用.且必須是公升序,降序的話會出錯.

lower_bound返回的是序列中第乙個》=x的數的指標(位址).

upper_bound返回的是序列中第乙個》x的數的指標(位址).

兩個函式都是從下標0開始.

沒錯,兩個函式只是相差乙個 "==" o(∩_∩)o哈哈~

返回陣列下標為: 

1

int a[100] = ;

2int p = lower_bound(a,a+n,2) -a;

3return p;

p即為第乙個》=2的數字的下標,即為1.

補充一下:兩個函式都是可以加cmp的,但是實際意義不大....

關於最大不上公升子串行:

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

13

關於最大上公升序列:

1

if (d2[len2] 2 d2[++len2] = a[i]; //同上3

else

4

P1020 飛彈攔截

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

P1020 飛彈攔截

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

P1020 飛彈攔截

原題鏈結 貪心 記錄每套系統攔截過的最小高度 新來的飛彈 如果高於所有飛彈的最低高度 那就只能再加一套了嘛 如果低於某些系統的最低高度 那就貪心 把它加到 最低高度最低的一套系統內 include include include include include include include inc...