JZOJ4986 神秘物質

2021-07-27 14:18:13 字數 1204 閱讀 2052

給定乙個長度為

n 序列,有

m個操作,要求支援動態插入乙個數,刪除乙個數,修改乙個位置的數。詢問乙個區間內所有子區間的最大極差和最小極差。

data constraint n,

m≤100000

可以發現,乙個區間內最大極差肯定可以是整個區間,最小極差肯定是相鄰兩項組成的子區間。

然後就可以splay隨便維護一下了。

時間複雜度:o(

nlog

n)

#include#include#include#include#include#includeusing namespace std ;

#define n 300000 + 10

int son[n][2] , pre[n] ;

int val[n] , size[n] , minv[n] , maxv[n] , di[n] , left[n] , right[n] ;

int a[n] ;

int n , m , cnt , root ;

void update( int v )

left[v] = left[l] ;

right[v] = right[r] ;

if ( !left[v] ) left[v] = val[v] ;

if ( !right[v] ) right[v] = val[v] ;

}int

get( int x )

return 0 ;

}void rotate( int x )

void splay( int x , int goal )

rotate(x) ;

}update(x) ;

if ( !goal ) root = x ;

}int build( int l , int r , int f )

void insert( int x , int e )

void merge( int x , int e )

int searchmax( int x , int y )

int searchmin( int x , int y )

int main() else

if ( op[2] == 'a' )

if ( op[2] == 'i' ) }}

return 0 ;

}

以上.

nyoj498子節點計數

時間限制 1000 ms 記憶體限制 65535 kb 難度 4 描述 給定一棵樹的前序和中序序列,求以指定關鍵字節點為根的子樹的節點個數。輸入第一行包含乙個整數 t t 20 表示有幾組測試資料 每組測試資料第一行為整數 n 1 n 50 表示樹的總結點數 接下來兩行為前序和中序序列 第三行有正整...

遍歷對角線 力扣498

給定乙個含有 m x n 個元素的矩陣 m 行,n 列 請以對角線遍歷的順序返回這個矩陣中的所有元素,對角線遍歷如下圖所示。示例 輸入 1,2,3 4,5,6 7,8,9 輸出 1,2,4,7,5,3,6,8,9 解釋 對角線遍歷,那麼我們可以先遍歷所有的正向對角線,即 1 2,4 3,5,7 由題...

每日一題力扣498

給定乙個含有 m x n 個元素的矩陣 m 行,n 列 請以對角線遍歷的順序返回這個矩陣中的所有元素,對角線遍歷如下圖所示。正解 這道題太焦心了!class solution def finddiagonalorder self,matrix list list int list int ifnot...