今天做了這道1020,感覺有點啟發,來寫寫
先貼上**:
1 #include 2 #include 3using
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哈哈~
返回陣列下標為:
1int 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
關於最大上公升序列:
1if (d2[len2] 2 d2[++len2] = a[i]; //同上3
else
4
P1020 飛彈攔截
題目描述 某國為了防禦敵國的飛彈襲擊,發展出一種飛彈攔截系統。但是這種飛彈攔截系統有乙個缺陷 雖然它的第一發炮彈能夠到達任意的高度,但是以後每一發炮彈都不能高於前一發的高度。某天,雷達捕捉到敵國的飛彈來襲。由於該系統還在試用階段,所以只有一套系統,因此有可能不能攔截所有的飛彈。輸入飛彈依次飛來的高度...
P1020 飛彈攔截
某國為了防禦敵國的飛彈襲擊,發展出一種飛彈攔截系統。但是這種飛彈攔截系統有乙個缺陷 雖然它的第一發炮彈能夠到達任意的高度,但是以後每一發炮彈都不能高於前一發的高度。某天,雷達捕捉到敵國的飛彈來襲。由於該系統還在試用階段,所以只有一套系統,因此有可能不能攔截所有的飛彈。輸入飛彈依次飛來的高度 雷達給出...
P1020 飛彈攔截
原題鏈結 貪心 記錄每套系統攔截過的最小高度 新來的飛彈 如果高於所有飛彈的最低高度 那就只能再加一套了嘛 如果低於某些系統的最低高度 那就貪心 把它加到 最低高度最低的一套系統內 include include include include include include include inc...