描述
在你的幫助下,蔚藍來到了埃及.在金字塔裡,蔚藍看到了乙個問題,傳說,能回答出這個問題的人就能受到埃及法老的祝福,可是蔚藍日夜奮戰,還是想不出來,你能幫幫他麼?(***: 胡扯,教主怎麼可能想不出來= _ =||)(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個物品的各自體積。乙個整數,表示箱子剩...