CDOJ 251 飛彈攔截 LIS

2021-07-11 04:38:58 字數 625 閱讀 7563

nlogn的最長上公升子串行,但是要輸出lis的長度和乙個最小字典序的lis。

然後怎麼輸出這個最小字典序的lis就成了問題,然後就翻被人的題解,發現就只有還儲存那個f陣列就行

f陣列還是儲存的到這個數的lis的長度,然後假如f[i]==f[j],則必有a[i]>=a[j],所以就肯定選擇a[j]是對的

然後就倒著掃一遍,相同的f[i]就取i靠後的那個。

**:

#include #include #include #include #include #include #include using namespace std;

#define maxn 100005

int a[maxn], d[maxn], f[maxn], path[maxn];

int n, len;

int main()

for (int i = n - 1, t = len; i >= 0; --i)

printf("%d\n", len);

for (int i = 1; i <= len; ++i)

}//system("pause");

//while (1);

return 0;

}

CDOJ 251 飛彈攔截 最長遞增子串行

點選開啟鏈結 就是尋找lis 並列印出來 dp i 表示到包括第i個數的前i個的最長遞增的長度 從數列從後往前找就好了 如果從前往後,前面的大數會覆蓋掉後面的小數,就不對了 1 include 2 using namespace std 34 const int maxn 1e5 10 5 6int...

又見攔截飛彈 LIS

時間限制 3000 ms 記憶體限制 65535 kb 難度 3 描述 大家對攔截飛彈那個題目應該比較熟悉了,我再敘述一下題意 某國為了防禦敵國的飛彈襲擊,新研製出來一種飛彈攔截系統。但是這種飛彈攔截系統有乙個缺陷 它的第一發炮彈能夠到達任意的高度,但是以後每一發炮彈都不能超過前一發的高度。突然有一...

NYOJ 79 攔截飛彈 LIS

時間限制 3000 ms 記憶體限制 65535 kb難度 3 描述 某國為了防禦敵國的飛彈襲擊,發展中一種飛彈攔截系統。但是這種飛彈攔截系統有乙個缺陷 雖然它的第一發炮彈能夠到達任意的高度,但是以後每一發炮彈都不能高於等於前一發的高度。某天,雷達捕捉到敵國飛彈來襲。由於該系統還在試用階段,所以只用...