洛谷P4309 TJOI2013 最長上公升子串行

2021-10-09 03:24:28 字數 926 閱讀 7910

給定乙個序列,初始為空。現在我們將1到n的數字插入到序列中,每次將乙個數字插入到乙個特定的位置。每插入乙個數字,我們都想知道此時最長上公升子串行長度是多少?

第一行乙個整數n,表示我們要將1到n插入序列中,接下是n個數字,第k個數字xk,表示我們將k插入到位置xk(0<=xk<=k-1,1<=k<=n)

n行,第i行表示i插入xi位置後序列的最長上公升子串行的長度是多少。

因為後插進去的優先順序更高,考慮倒序解決這個問題。

通過倒序插入確定了每乙個點的真正位置。

不過需要注意後面已經插入的對前面的影響。

所以通過二分確定位置pos。

答案pos=後面在位置pos前插的個數+這次操作插的位置x

然後按正常逆序對做就行了。

#include

using

namespace std;

int a[

210010

],n;

int pos[

210010];

int sum[

210010];

int p[

210010];

intlowbit

(int x)

void

add(

int pos,

int x)

void

add1

(int x)

intquery

(int x)

intquery1

(int x)

intget

(int x)

return ans;

}int

main()

for(

int i=

1;i<=n;i++)}

/*751

1100

2*/

P4309 TJOI2013 最長上公升子串行

給定乙個序列,初始為空。現在我們將1到n的數字插入到序列中,每次將乙個數字插入到乙個特定的位置。每插入乙個數字,我們都想知道此時最長上公升子串行長度是多少?因為每次插入的數是按順序從小到大的,所以我們可以從後往前計算 我們先用 vector 自帶的 insert 函式得到所有數都插入完後的序列,然後...

洛谷P4304 TJOI2013 攻擊裝置 題解

最大獨立集 總點數 最大匹配數 獨立集 點集,圖中選一堆點,這堆點兩兩之間沒有連邊 最大獨立集 盡可能多得選點,使得其滿足獨立集的性質 這是網路流二分圖經典題目,值得練習 include include include using namespace std int x 9 int y 9 stru...

洛谷3962 TJOI2013 數字根

乙個數字的數字根定義為 這個數字每一位的數字加起來求和,反覆這個過程直到和小於10。例如,64357的數字跟為7,因為6 4 3 5 7 25,2 5 7個區間的數字根定義為這個區間所有數字和的數字根。給定乙個序列a1,a2,a3,an,你需要回答一些詢問。每乙個詢問給定個區間 l,r 求出這個區間...