vijos 難解的問題

2021-08-15 14:28:27 字數 977 閱讀 7195

描述

在你的幫助下,蔚藍來到了埃及.在金字塔裡,蔚藍看到了乙個問題,傳說,能回答出這個問題的人就能受到埃及法老的祝福,可是蔚藍日夜奮戰,還是想不出來,你能幫幫他麼?(***: 胡扯,教主怎麼可能想不出來= _ =||)(ws這人說的=。=)

問題是這樣的: 

給定乙個序列.求最長上公升子串行(lis)p1。

但是,現在還有乙個附加條件:求出的最長上公升子串行必須含有第k項。

比如,在上面的例子中,要求求出的最長上公升子串行必須含有第6項,那麼最長上公升子串行就是:65 155 207 389。

格式輸入格式

第一行是用空格隔開的兩個正整數n、k,含義同上所述.

第二行n個數,即給出的序列.

輸出格式

僅有乙個數,表示含有第k項的最長上公升子串行的長度.

樣例1樣例輸入1

5 31 2 3 2 1

copy

樣例輸出1

3copy

限制各個測試點1s

提示對於60%的資料,n<=10000;

對於100%的資料,1<=n<=300000 ,1<=k<=n,序列的每乙個數為小於2^31-1 的非負整數.

題解:lis二分

#include #includeusing namespace std;

const int maxn=300005;

long long dp[maxn];

long long a[maxn];

int binary_search(int i, int len)

return left;

}int main()

}int ans = 1;

dp[1] = a[k];

for(int i = k+1; i <= n; ++i)

}printf("%d\n", ans + len - 1);

return 0;

}

難解的問題(vijos1369)

演算法 dp 分析 非常經典的乙個題,個人認為cai神牛的解法非常獨特,值得借鑑!簡單的說,題目就是求乙個包含某一項的最長上公升序列,設序列的序號是m,我們可以採用這種思路 先求1 m中以m為終點的最長上公升,再求m n中以m為起點的最長上公升,兩項累加一下就可以得出結果。題目資料量很大,因此我們只...

Vijos P1369 難解的問題

題目大意 給你乙個序列,叫你求最長上公升子串行長度,但必須包含第k項。解題思路 我們把k左邊的比a k 大的數去掉,k右邊的比k小的數去掉,就可以保證選到a k 了 因為左邊的數小於a k 而a k 小於右邊的數,取了a k 一定比不取優 此題由於n到300000,需要優化後的lis,我使用了單調佇...

裝箱問題 vijos

有乙個箱子容量為v 正整數,o v 20000 同時有n個物品 o n 30 每個物品有乙個體積 正整數 要求從 n 個物品中,任取若千個裝入箱內,使箱子的剩餘空間為最小。第一行,乙個整數,表示箱子容量 第二行,乙個整數,表示有n個物品 接下來n行,分別表示這n個物品的各自體積。乙個整數,表示箱子剩...