描述當一陣風吹來,風箏飛上天空,為了你,而祈禱,而祝福,而感動……
oyiya 在 ak 了 ioi 之後來到了鄉下,在田野中玩耍,放鬆身心。
他發現前面有一排小朋友在放風箏,每乙個風箏有乙個高度 hi,風箏的高度可能會隨著小朋友的心情而改變。這時,毒瘤的 oyiya 有了乙個毒瘤的 idea,他想知道改變高度之後風箏的最長嚴格上公升子串行。oyiya 太強了表示並不想做這種水題,你能解決這個問題嗎?
輸入第一行為兩個整數 n, m,表示小朋友的個數和詢問數。
第二行有 n 個整數,表示 hi。
接下來 m 行,每行兩個整數 ai, bi,表示詢問將第 ai 只風箏的高度變成 bi 後的 lis。注意詢問之間是獨立的,後面的詢問不受前面詢問的影響.
輸出m 行,每行乙個整數表示詢問的答案。
樣例輸入[複製]
3 32 2 3
1 31 1
3 2樣例輸出[複製]23
1提示直接上**
code:
1 #include2 #include3 #include4 #include5 #include6over#define n 800005
7using
namespace
std;
8int
c[n],a[n],cnt,d[n],ans[n],dp[n],dp[n];
9int lowbit(int
x)12
void add(int x,int
v)17}18
int query(int
x)24
return
ans;25}
26struct
nodeq[n];
29bool cmp(const node&a,const node&b)
32void add(int x,int
v)37}38
int query(int
x)44
return
ans;45}
46int
check[n];
47int
main()
54for(int i=1;i<=m;i++)
59 sort(d+1,d+cnt+1
);60 cnt=unique(d+1,d+cnt+1)-d-1;61
for(int i=1;i<=n;i++)
64for(int i=1;i<=m;i++)
67 sort(q+1,q+m+1
,cmp);
68int head=1;69
for(int i=1;i<=n;i++)
74else
79 dp[i]=query(a[i]-1)+1;80
add(a[i],dp[i]);81}
82}83int max0=query(cnt);
84 head=m;
85 memset(c,0,sizeof
c);86
for(int i=n;i>=1;i--)
92else
97 dp[i]=query(a[i]+1)+1;98
add(a[i],dp[i]);
99if(dp[i]+dp[i]==max0+1)check[dp[i]]++;
100}
101}
102for(int i=1;i<=m;i++)
108for(int i=1;i<=m;i++)cout
;109
return0;
110 }
HAOI2015 T2 樹狀陣列
題意 維護一棵樹,要求可以支援1 單點權值加,2 以某點為根的子樹中的所有點權值加,3 詢問某點到根路徑上的點權和 分析 法1 樹鏈剖分,以後來補吧 法2 線段樹 與下面的大相徑庭 法3 樹狀陣列維護尤拉序列。差分的思想與dfs序結合,i點在dfs序中的位置 進出等價 的字首和就是i到根的權值和。對...
數星星 contest 樹狀陣列練習 T2
天空中有一些星星,這些星星都在不同的位置,每個星星都有個座標,如果乙個星星的左下方 包括正左和正下 有k顆星星,就說這顆星星是k級的。給定星星的位置,輸出各級星星的數目。第一行,乙個整數n,表示星星的數目。接下來n行,每行兩個整數x,y,表示乙個星星的座標,輸入資料保證不會有星星重疊。n行,每行乙個...
bzoj4034 T2 樹鏈剖分 樹狀陣列
一種明顯的做法是直接樹鏈剖分然後用區間修改區間查詢樹狀陣列 我寫的這種 或者線段樹來維護吧。這樣做是o nlog 2n 的。但是還可以做到o nlogn 首先可以發現它是單點鏈上查詢,那麼可以考慮用差分的思想,或者考慮將單點修改直接變成區間修改然後就只用單點簡單查詢了。首先考慮單點修改,這種操作只對...