p1020 洛谷(簡單 dp)

2021-08-22 12:01:43 字數 1255 閱讀 2546

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

輸入飛彈依次飛來的高度(雷達給出的高度資料是 \le 50000≤50000 的正整數),計算這套系統最多能攔截多少飛彈,如果要攔截所有飛彈最少要配備多少套這種飛彈攔截系統。

輸入格式:

11 行,若干個整數(個數 \le 100000≤100000 )

輸出格式:

22 行,每行乙個整數,第乙個數字表示這套系統最多能攔截多少飛彈,第二個數字表示如果要攔截所有飛彈最少要配備多少套這種飛彈攔截系統。

輸入樣例#1:複製

389 207 155 300 299 170 158 65
輸出樣例#1:複製

6

2

為了讓大家更好地測試n方演算法,本題開啟spj,n方100分,nlogn200分

每點兩問,按問給分

轉化一下: 其實就是求最長不上公升子串行(不嚴格單調)和最長上公升子串行(嚴格單調)

這個評測機re竟然給wa,,詭異。。

**:

#includeusing namespace std;

typedef long long ll;

const ll n =1e5+5;

ll c[50005];

ll a[n];

ll lowbit(ll x)

void update(ll x,ll val)

}ll getmax(ll x)

return mx;

}ll cc[n];

void update1(ll x,ll val)

}ll getmax1(ll x)

return mx;

}int main()

n--;

/*for(ll i=1;i<=n;i++) cout

ll max1=0;

for(ll i=1;i<=n;i++)

///cout<<"max1 "

for(ll i=1;i<=n;i++)

///cout<<"max2 "

}

洛谷P1020 飛彈攔截

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

洛谷 P1020 飛彈攔截

題目大意 對於乙個飛彈攔截系統 它的第一發炮彈能夠攔截任意高度的飛彈,但之後攔截的每一發炮彈都不能高於前一發的高度。輸入n發飛彈依次飛來的高度a i 計算這套系統最多能攔截多少飛彈,如果要攔截所有飛彈最少要配備多少套這種飛彈攔截系統。1 n 100 0 a i 30000 題解 p i 表示攔截了第...

洛谷 P1020 飛彈攔截

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