零值序列(二叉查詢樹變形)

2021-09-26 08:25:12 字數 898 閱讀 7976

題目:

有乙個有n個整數的序列,再給出q個請求組成。

請求有兩個型別,如下:

1 p v——更新序列中第p個數為v。

2——查詢將序列轉換為零值序列所需的最少操作次數。

零值序列是乙個所有元素都是零的序列。

一次操作中,可以任意選擇乙個值x,並將序列中的所有非零元素都減去它,但是不能出現減去x後變成負數的情況。

輸入格式:

第一行由兩個整數n和q(1≤n,q≤10^5)組成,其中n是序列的大小,q是請求的數量。

然後n個整數a1、a2、...、a n(0≤ai≤10^9),表示序列。

接下來是q行,每行包含問題語句中描述的格式的請求。

對於第一類請求,保證以下約束條件成立:1≤p≤n,0≤v≤10^9。

輸出格式:

對於第二種型別的每個請求,輸出將序列轉換為零值序列所需的操作的最小數量。

輸入樣例:

5 53 2 1 5 4

1 2 3

1 3 2

1 4 1

2輸出樣例:

這題也是特別水的

思路:二叉查詢樹 + 對映(map);

#includeusing namespace std;

typedef long long ll;

const int m = 1e5 + 100;

const int inf = 1e9 + 10;

int a[m];

mapbook;

int main()

for(int i = 1; i <= q; i++)

} return 0;

}

這裡考的乙個優化就是將陣列變為元素都是零的序列的數量其實就是非零不同數的數量,用乙個變數來儲存大小即可。

二叉樹 二叉查詢樹

構建二叉樹,判斷是否為二叉查詢樹,遞迴先序遍歷,非遞迴中序遍歷 include include include include using namespace std 二叉樹結點 struct treenode 鍊錶結點 struct listnode struct tempnodetempnode...

二叉樹 二叉查詢樹

二叉樹 binary tree 一種樹型結構,每個節點最多擁有兩個節點。如下圖 幾種型別的二叉樹 1.full binary tree 每個節點的孩子數 是 0 或者 2.對高度沒有要求。如下圖 2.perfect binary tree 這個就是最完美的樹,顧名思義,所有葉子節點都有相同的深度,並...

樹(樹,二叉樹,二叉查詢樹)

1.定義 n n 0 個結點構成的有限集合。當n 0時,稱為空樹 2.對於任一棵非空樹 n 0 它具備以下性質 1 樹中有乙個稱為 根 root 的特殊結點,用 r 表示 2 其餘結點可分為m m 0 個互不相交的有限集t1,t2,其中每個集合本身又是一棵樹,稱為原來樹的子樹。3.樹的一些性質 1 ...